首页 > 解决方案 > Selenium with Python - 在选定元素之后查找元素

问题描述

我正在尝试查找链接文本,但在特定图像之后,但我找不到使用 Selenium 正确执行此操作的方法。我的代码就在下面

 

    browser.get(URL)
    browser.find_element_by_xpath('//img[@src="Images"]')
    browser.find_element_by_partial_link_text("Bla").click()

我需要在特定的 xpath 之后开始我的部分链接文本选择。你知道一个简单的方法吗?

这是 html 页面的架构(它不是公开的,它只是它的一部分):


<tr style="background-color:#E5E5E5;font-size:9pt;">
            <td align="center" style="width:70px;">05/03/2018</td><td align="center" style="width:40px;">
                    <img id="1" src="Images" style="border-width:0px;">
                </td><td>
                    <span id="2"></span>
                    <a id="3" href="javascript:OuvreFenetre(3683826,241258727)">Blabla</a>
                    <span id="4"></span>
                </td>
        </tr>

我使用 scr="Images" 找到 img,但我需要在此之后选择超链接(在此处调用“Blabla”)。

标签: pythonselenium

解决方案


我可能会做这样的事情:

if driver.find_element_by_xpath('//img[@src="src"]').is_displayed():
    driver.find_element_by_partial_link_text("words").click()

或者如果您想介绍WebDriverWait,请按如下方式使用:(更可靠的解决方案)

wait = WebDriverWait(driver, 10)
if wait.until(EC.visibility_of_element_located((By.XPATH, "your xpath here"))).is_displayed():
    driver.find_element_by_partial_link_text("words").click()

或者如果锚标签是图像标签的子标签,您可能可以这样做://img[@src="src"]/a[contains(@href, ' href here')]

进口:

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

更新 1:

您可以根据Image src选择锚标记,如下所示:

//img[contains(@src, 'Images')]/following-sibling::a

所以代替这两行:

browser.find_element_by_xpath('//img[@src="Images"]')
browser.find_element_by_partial_link_text("Bla").click()

您可以像这样使用上面的 xpath:

browser.find_element_by_xpath("//img[contains(@src, 'Images')]/following-sibling::a").click()

或者

//img[contains(@src, 'Images')]/following-sibling::a[contains(@href, 'javascript')]

更新 2:

使用下面的 xpath :

//img[contains(@src, 'Images')]/../following-sibling::td/a

推荐阅读