问题描述
所以基本上我需要帮助的是:
我想用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