使用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