首页 > 解决方案 > (Python Selenium) 有没有办法在单击按钮之前读取按钮上方的 html 元素?

问题描述

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 已被删除,因此上面的所有内容都向下移动)。

一个是我在想是阅读时间,然后单击第一个可点击的按钮,但是,我不知道如何执行此操作或是否可能。

标签: pythonhtmlselenium

解决方案


阅读按钮上方的 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()方法。


推荐阅读