如何使用xpath选择超出标记的下拉项

时间:2017-07-31 13:01:28

标签: selenium xpath

我已经尝试了几个xpath来选择下拉列表。但没有任何工作。

我使用的一些xpath如下:

By.xpath("//table/tbody/tr[2]/td[2]/span").click;

或者

By.xpath("/td[2]/span[contains(text(),'NATIONAL IDENTITY DOCUMENT')]").click;

请找到下面的html标签,我需要选择“ASYLUM SEEKER PERMIT DOCUMENT'或者国家身份证件'。

<tbody>
<tr id="jP2Qrg" class="z-comboitem">
<td class="z-comboitem-img"/>
<td class="z-comboitem-text">
<span class="z-comboitem-spacer"/>
ASYLUM SEEKER PERMIT DOCUMENT
</td>
</tr>
<tr id="jP2Qsg" class="z-comboitem z-comboitem-over">
<td class="z-comboitem-img"/>
<td class="z-comboitem-text">
<span class="z-comboitem-spacer"/>
NATIONAL IDENTITY DOCUMENT
</td>
</tr>
</tbody>

当我尝试使用firepath获取xpath时,它是动态的。每次xpath和id都在不断变化。所以请建议有效的xpath。

6 个答案:

答案 0 :(得分:2)

文本不在span文本中,而是在第二个td标记中。您可以尝试对代码进行小的更改,如下所示。

By.xpath("//table/tbody/tr[2]/td[2]").click;

By.xpath("//td[contains(text(),'NATIONAL IDENTITY DOCUMENT')]").click;

答案 1 :(得分:0)

你可以查看..,

By.xpath("//*[contains(text(),'NATIONAL IDENTITY DOCUMENT')]").click;

By.xpath("//*[contains(text(),'ASYLUM SEEKER PERMIT DOCUMENT')]").click;

答案 2 :(得分:0)

尝试使用以下XPath来匹配所需的选项:

By.xpath("//td[normalize-space()='ASYLUM SEEKER PERMIT DOCUMENT']").click;

By.xpath("//td[.='ASYLUM SEEKER PERMIT DOCUMENT']").click;

正如@Murthi所说,文本节点不是span的孩子,而是td。请注意,有some specifics in locating text nodes

答案 3 :(得分:0)

以下是您的问题的答案:

要点击ASYLUM SEEKER PERMIT DOCUMENT,您可以使用以下xpath

By.xpath("//td[contains(.,'ASYLUM SEEKER PERMIT DOCUMENT') and not (@class='z-comboitem-spacer')]").click;

如果这回答你的问题,请告诉我。

答案 4 :(得分:0)

这个xpaths怎么样,

更新了代码

(//td[2])[1]//*[starts-with(@class,"z-com")]; // Selects ASYLUM..
(//td[2])[2]//*[starts-with(@class,"z-com")]; // Selects NATIONAL..

如果它在同一位置没有相同的类名,这应该有用。

旧xpath的

driver.findelement(By.xpath("(//td[2])[1]")); // selects ASYLUM SEEKER PERMIT DOCUMENT 

driver.findelement(By.xpath("(//td[2])[2]")); // selects NATIONAL IDENTITY DOCUMENT 

答案 5 :(得分:0)

找出选择下拉选项的解决方案。

通过使用List方法,我获取了该字段中可用的选项列表,并通过单击列表的索引值进行选择。

 List<WebElement> Idtype = driver.findElements(By.xpath("//tr[2]/td[2][@class = 'z-comboitem-text']"));
    Idtype.get(0).click();