python - (Python Selenium) 有没有办法在单击按钮之前读取按钮上方的 html 元素?
问题描述
<td class="hidden-sm-down">Extra Time</td>
<td class="hidden-sm-down">2020-08-08T15:00</td>
<td class="hidden-sm-down">2020-08-08T19:00</td>
<td>Approved</td>
<td class="hidden-sm-down">
<button class="btn btn-secondary" data-backdrop="static" data-keyboard="false" data
target="#cancelRequestModal" data-toggle="modal" type="button">
Cancel
网站的格式如上图所示,但会在不同的日期/时间重复;我想知道在单击“取消”按钮之前是否有办法检查时间(如 15:00 和 19:00)。我以前这样做的方法是将所有按钮放入一个列表中,然后单击索引为 9 的那个,但是如果所有缺少移位并且之前的索引 9 现在是索引 8(索引之前的移位),这将不起作用9 已被删除,因此上面的所有内容都向下移动)。
一个是我在想是阅读时间,然后单击第一个可点击的按钮,但是,我不知道如何执行此操作或是否可能。
解决方案
阅读按钮上方的 HTML 元素的最佳方法是使用“Xpath”。Xpath
将为您提供来回导航的功能/能力。
通过使用下面的内容,XPath
您可以提取其中的文本<td>
。此外,您可以通过将其收集到列表中来重复相同的操作。
第<td>
一次你可以使用以下xpath
-
//button[contains(text(),"Cancel")]/parent::td/preceding-sibling::td[text()='Extra Time']/following-sibling::td[1]
<td>
随着时间的推移,您可以使用以下第二个xpath
-
//button[contains(text(),"Cancel")]/parent::td/preceding-sibling::td[text()='Extra Time']/following-sibling::td[2]
您可以使用.text
属性提取文本。
我正在查找与包含“取消”文本的按钮相关的时间。要提取确切的时间,您可以使用该substring()
方法。
推荐阅读
- java - 使用 Hibernate 将 Mysql Time 列转换为字符串属性,无需更改时区
- amazon-s3 - 如何在 druid 摄取规范中排除特定扩展名的文件?
- python - 为什么训练模型需要这么长时间?
- flutter - 如何在 Flutter/Dart 中以流的形式解密音频文件?
- mysql - MySql DBMS 是否在执行查询之前更改查询以使用索引?
- linux - 将日志转发到 http 服务器
- cassandra - 在 cassandra 3.4.4 中记录所有查询
- java - ThreadMXBean 如何获取线程 CPU 时间和内存?
- html - 如何使用 jekyll 突出显示 Markdown 中存在的特定代码片段行?
- python-3.x - python numpy dict到nparry和IndexError:只有整数,切片