微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Python和Selenium在XPath中进行继兄弟

如何解决使用Python和Selenium在XPath中进行继兄弟

对于图片中绿色标记内容,我无法弄清楚如何使用跟随兄弟来查找xpath。基本上,我想单击“打开”按钮,该按钮与文本“前”在同一行。

enter image description here

解决方法

尝试此XPath:

//td[strong="front"]/following-sibling::td//a[.="Open"]

P.S。由于您没有以文本形式提供HTML示例(不以图片形式提供!!!)我看不到<i>...</i>节点中是否有文本

所以您也可以尝试

//td[strong="front"]/following-sibling::td//a[contains(.,"Open")]
,

您可以使用此XPath:

//td[strong="front"]/following-sibling::td//a[contains(text(),"Open")]
,

尝试一下

/// strong / parent :: td /以下- 兄弟姐妹:: td /后裔:: i /跟随兄弟姐妹:: text() [包含(。,'Open')]

上面的xpath假设打开文本的级别,而我是同一级别的

,

根据HTML,您与 front 共享了带有文本的元素,没有任何兄弟姐妹。因此,您可能无法使用following-sibling


解决方案

要单击文本为打开的按钮,该按钮与文本为 front 的元素位于同一行,则需要为WebDriverWait element_to_be_clickable(),然后您可以使用以下基于Locator Strategies

  • 使用 XPATH

    WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//strong[text()='front']//following::td[1]//a[@class='btn default ']"))).click()
    
  • 使用 XPATH 以及文本:

    WebDriverWait(driver,"//strong[text()='front']//following::td[1]//a[contains(.,'Open')]"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。