如何通过特定文本查找元素 id 并单击它?

时间:2021-06-22 12:34:57

标签: python selenium selenium-webdriver

我正在尝试编写一个机器人来预订健身房/健身房课程。

我已经设法通过登录页面等。但不知道如何在元素中搜索文本并点击它。

HTML 页面源代码:

<input type="submit" name="ctl00$MainContent$ClassStatus$ctrl0$btnBook" value="Book" id="ctl00_MainContent_ClassStatus_ctrl0_btnBook" class="btn btn-success pull-right" data-qai-id="button-ActivityID=B7GYMSB16300321 ResourceID=30212837 Duration=60 Status=Available Date=23/06/2021 16:30:00" />

所以当我让我的机器人通过元素 id 点击它时 - 它工作得很好

  driver.find_element_by_id('ctl00_MainContent_ClassStatus_ctrl0_btnBook').click()

唯一的问题是这个元素 id 不是一成不变的,它确实会随着特定的时间/天/等而改变...

在 html 源代码中我可以看到:

data-qai-id="button-ActivityID=B7GYMSB16300321 ResourceID=30212837 Duration=60 Status=Available Date=23/06/2021 16:30:00"

有没有办法在 data-qai-id = Date=23/06/2021 16:30:00 中查找该测试的一部分,然后单击包含它的 element_id??

非常感谢您抽出宝贵时间。

2 个答案:

答案 0 :(得分:0)

不,您应该为此目的使用日期格式:

 Date=23/06/2021 16:30:00

因为它会随着时间的推移而不同,你的代码将永远无法工作。试试下面的 xpath

//input[contains(@name, 'MainContent_ClassStatus_')]

//input[contains(@id, 'MainContent_ClassStatus_') and @value='Book' and contains(@name, '$MainContent$ClassStatus$ctr')]

答案 1 :(得分:-1)

看看这是否有效:

driver.find_element_by_xpath(".//input[@value='Book']").click()
相关问题