python - 如何通过特定文本查找元素 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?
非常感谢您的时间。
解决方案
不,您应该为此使用日期格式:
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')]
推荐阅读
- flutter - 构建后出现此错误 - 空值检查运算符用于空值
- fail2ban - Fail2Ban 没有添加 iptables 链 f2b-sshd
- azure - Azure Devops:在特定日期触发发布管道
- c++ - 如何避免关于未初始化变量的整洁警告
- python - 重新排列单链表
- java - 将字符串转换为 java 友好的字符串
- regular-language - 常规语言的最小抽水长度
- python - 使用 Pandas 导出 Elasticsearch (Python)
- docker - 直接在 VPS 上与 Docker 容器上托管网站
- php - 通过 PHP 使用表格按日期显示记录