硒无法找到隐藏按钮的问题

问题描述

您好,我想找到并单击似乎隐藏在网页上的按钮:https://www.thetrainline.com/book/results?origin=69b59b70a73b72302eff45627aeef377&destination=f0269e87c1084b4e752e4cd5bbf6e062&outwardDate=2020-10-23T18%3A00%3A00&outwardDateType=departAfter&journeySearchType=single&passengerDiscountCards%5B0%5D=903ab66d2652ac9cc3e75bf63f3120cd3fecbbe2&passengers%5B0%5D=1995-10-21%7C617e5009-9253-42e9-a5d9-3e78934d9607&selectedOutward=cIcpW5313Ao%3D%3A5pIf0wIdti0%3D%3AStandard&lang=fr

以下代码可以单击右上方的“ 1 jeune(0-25)Ajouter une carte”按钮,然后单击“ Ajouter cartes et abonnements”按钮,“ SNCF-Abonnements”,但是我无法单击“ Abononnement”列表出现后,“ TGV max”按钮就会显示

from selenium import webdriver

driver = webdriver.Chrome('/Users/macsamy/Downloads/chromedriver') 

driver.get('https://www.thetrainline.com/book/results?origin=69b59b70a73b72302eff45627aeef377&destination=f0269e87c1084b4e752e4cd5bbf6e062&outwardDate=2020-10-23T18%3A00%3A00&outwardDateType=departAfter&journeySearchType=single&passengerdiscountCards%5B0%5D=903ab66d2652ac9cc3e75bf63f3120cd3fecbbe2&passengers%5B0%5D=1995-10-21%7C617e5009-9253-42e9-a5d9-3e78934d9607&selectedOutward=cIcpW5313Ao%3D%3A5pIf0wIdti0%3D%3AStandard&lang=fr') 


card = driver.find_element_by_class_name('_1m8f79NaN')
card.click() 

abonnement = driver.find_element_by_class_name('_bwmpdt')
abonnement.click()

tgv = driver.find_elements_by_class_name('_1ntnz22')[1]
tgv.click()

tgv_max = driver.find_element_by_class_name('_nyjqe2')
tgv_max.click()

我尝试了多种方法,例如xpath或使用js命令,但无法解决问题。我在这个领域很新,所以我有点迷茫。您有解决此问题的想法吗?

解决方法

对于“ SNCF-弃权”,您可以使用driver.find_element_by_class_name('_1ntnz22')

对于“ Abonnement TGV max”,您可以通过xpath用文本driver.find_element_by_xpath('//*[text()="Abonnement TGVmax"]')定位

使用ActionChains单击。

请参见以下代码:

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome('/Users/macsamy/Downloads/chromedriver') 

driver.get('https://www.thetrainline.com/book/results?origin=69b59b70a73b72302eff45627aeef377&destination=f0269e87c1084b4e752e4cd5bbf6e062&outwardDate=2020-10-23T18%3A00%3A00&outwardDateType=departAfter&journeySearchType=single&passengerDiscountCards%5B0%5D=903ab66d2652ac9cc3e75bf63f3120cd3fecbbe2&passengers%5B0%5D=1995-10-21%7C617e5009-9253-42e9-a5d9-3e78934d9607&selectedOutward=cIcpW5313Ao%3D%3A5pIf0wIdti0%3D%3AStandard&lang=fr') 


card = driver.find_element_by_class_name('_1m8f79NaN')
card.click() 

abonnement = driver.find_element_by_class_name('_bwmpdt')
abonnement.click()

tgv = driver.find_element_by_class_name('_1ntnz22')
tgv.click()

tgv_max = driver.find_element_by_xpath('//*[text()="Abonnement TGVmax"]')
action = ActionChains(driver)
action.move_to_element(tgv_max).click(tgv_max).perform()