python - 硒问题找到隐藏按钮
问题描述
以下代码可以点击右上角的“1 jeune (0-25) Ajouter une carte”按钮,然后点击“Ajouter cartes et abonnements”按钮,“SNCF - Abonnements”,但我无法点击“Abonnement 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 - Abonnements”,您可以使用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()
推荐阅读
- python - 如何让图像在 pygame 中出现/消失?
- html - 这个简单的 HTML 和 CSS 代码不仅适用于 IOS 设备
- slurm - SLURM 错误 - sbatch HS8_main.sbatch sbatch:错误:无法打开文件 HS8_main.sbatch
- google-drive-api - Google Drive API V3 - 一些具有根父级的文件夹显示在 Google Drive UI 中的不同文件夹下
- python - 从 csv 文件中获取最大值和最小值 where (case)
- python - 无法在 Flask 中使用环境变量
- svg - 当svg文档的单词之间出现空格时如何将文本换行
- hive - 将pyspark中的一列字符串数组转换为一列中的多行
- javascript - 此函数应以 id、名称和电子邮件作为参数,并返回具有 `id`、`name` 和 `email` 属性的对象
- mongodb - Mongo Query - 过滤嵌套数组并返回不包含特定字段的文档