如何从列表中选择元素并转到父元素,然后进行同级(通过Xpath)

时间:2018-07-02 09:38:41

标签: python selenium selenium-webdriver xpath webdriver

我正在尝试找到一种与文本具有相同tr的按下按钮的方式,通过该按钮可以本地化要下载的特定文件。我将对其进行详细描述:

有一个包含许多tr的网站。每个tr包含一对子td。这些td包含说明和下载按钮。我需要通过对其td的描述来定位所需的tr。然后,我想转到包含该tr下载按钮的td。

说明有所不同,但我只对包含“ DV”文本的内容感兴趣。一个网站上总是有几个,但我想首先选择。到目前为止,我发现的是:

$x("//*[contains(text(), 'DV')]")[0]

然后我不知道如何转到父元素,然后转到包含下载按钮的同级td。

HTML看起来像这样

<tr>
<td class='a'>DV some other characters1</td><td class='a'>Download button code</td>
</tr>
<tr>
<td class='a'>DV some other characters2</td><td class='a'>Download button code</td>
</tr>
<tr>
<td class='a'>Some other description</td><td class='a'>Download button code</td>
</tr>

如上所述,我想用DV来获得第一个td,然后转到下载按钮。

4 个答案:

答案 0 :(得分:1)

尝试在XPath下找到与td开头的"DV"在同一行中的第一个“下载”按钮

(//tr[starts-with(td, 'DV')]/td[.='Download button code'])[1]

或使用following-sibling

(//td[starts-with(., 'DV')]/following-sibling::td[.='Download button code'])[1]

答案 1 :(得分:1)

根据您共享的 HTML ,找到包含文本 DV 的第一个<td>并标识包含文本下载的相应元素,您可以使用以下 xpath

"//tr//td[@class='a'][contains(.,'DV')]//following::td[1]"

答案 2 :(得分:0)

您可以这样做:

//td/parent::tr     - gives the parent 'tr' of 'td'

我无法提供确切的xPath,同时又不完全了解您想要达到的目标。但是使用我的例子并不难发现。您还可以找到有关xPath轴here的更多信息。

答案 3 :(得分:0)

您可以参考以下内容:

//td[contains(text(),'characters1')]//following::td[contains(text(),'Download button code')]