选择另一个项目,然后搜索SeleniumPython

问题描述

所以基本上我需要帮助的是:

我想用selenium-3.141.0和Python 3.8.5搜索BBXXCODE。 我正在使用driver.find_element_by_xpath("//*[contains(text(),'BBXXCODE')]",它按预期方式工作。但是我需要以某种方式提取顶部的<tr>标记的ID,因为我想使用driver.find_element_by_xpath('//*[@id="tr9"]/td[2]/h1').click()单击I need to select this文本。

有没有办法做到这一点,还是应该继续通过I need to select this文本而不是代码进行搜索

这是代码段:

<tr id='tr9'>
    <td></td>
    <td role='gridcell'>
        <span class='link'>I need to select this</span>
    </td>
    <td role='gridcell'>
        BBXXCODE
    </td>
</tr>

我希望基本上是清楚的,如果没有的话,请随时告诉我,我将尝试在其中添加更多详细信息。 预先感谢

解决方法

要针对文本 BBXXCODE 提取<tr>标签的ID,可以使用以下Locator Strategies之一:

  • 使用 xpath parent

    tr_id = driver.find_element_by_xpath("//td[contains(.,'BBXXCODE')]//parent::tr[1]").get_attribute("id")
    
  • 使用 xpath ancestor

    tr_id = driver.find_element_by_xpath("//td[contains(.,'BBXXCODE')]//ancestor::tr[1]").get_attribute("id")
    
,

如果可能的话,我建议您只一步一步地获得它,而不是先获得ID然后再找到另一个元素(分两步)。您可以使用下面的XPath根据BBXXCODE的位置查找所需的SPAN。

//tr[./td[contains(text(),'BBXXCODE')]]/td/span

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...