使用 Python 和 Selenium 在 XPath 中跟随兄弟
Following-sibling in XPath using Python and Selenium
我不知道如何使用 following-sibling 为图片中标记为绿色的那些找到 xpath。基本上我想点击名为“打开”的按钮,它与文本“前面”位于同一行。
试试这个 XPath:
//td[strong="front"]/following-sibling::td//a[.="Open"]
P.S。因为你没有提供 HTML sample as text (不要提供它作为图片!!!) 我看不到 <i>...</i>
node
中是否有文本
所以你也可以试试
//td[strong="front"]/following-sibling::td//a[contains(., "Open")]
您可以使用这个 XPath:
//td[strong="front"]/following-sibling::td//a[contains(text(), "Open")]
试试这个
//strong/parent::td/following-
sibling::td/descendant::i/following-sibling::text()
[contains(.,'Open')]
上面的xpath是假设Open text的级别和i是同一级别
根据 HTML,您已将元素与文本共享,因为 front 没有任何兄弟姐妹。所以你可能无法使用 following-sibling
.
解决方案
要单击文本为 Open 的按钮,该按钮与文本为 front 的元素位于同一行,您需要诱导 for the element_to_be_clickable()
and you can use the following xpath based :
使用 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, 20).until(EC.element_to_be_clickable((By.XPATH, "//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
我不知道如何使用 following-sibling 为图片中标记为绿色的那些找到 xpath。基本上我想点击名为“打开”的按钮,它与文本“前面”位于同一行。
试试这个 XPath:
//td[strong="front"]/following-sibling::td//a[.="Open"]
P.S。因为你没有提供 HTML sample as text (不要提供它作为图片!!!) 我看不到 <i>...</i>
node
所以你也可以试试
//td[strong="front"]/following-sibling::td//a[contains(., "Open")]
您可以使用这个 XPath:
//td[strong="front"]/following-sibling::td//a[contains(text(), "Open")]
试试这个
//strong/parent::td/following- sibling::td/descendant::i/following-sibling::text() [contains(.,'Open')]
上面的xpath是假设Open text的级别和i是同一级别
根据 HTML,您已将元素与文本共享,因为 front 没有任何兄弟姐妹。所以你可能无法使用 following-sibling
.
解决方案
要单击文本为 Open 的按钮,该按钮与文本为 front 的元素位于同一行,您需要诱导 element_to_be_clickable()
and you can use the following xpath based
使用 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, 20).until(EC.element_to_be_clickable((By.XPATH, "//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