首页 > 解决方案 > 如何通过特定文本查找元素 id 并单击它?

问题描述

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

我已经设法通过登录页面等。但无法弄清楚如何在元素中搜索文本并单击它。

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?

非常感谢您的时间。

标签: pythonseleniumselenium-webdriver

解决方案


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

 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')]

推荐阅读