根据父母和兄弟姐妹找到一个元素

时间:2012-08-13 16:56:26

标签: c# xpath selenium webdriver

<div id="Template_ctl16_ctl01_Location1_TreeView" style="overflow:auto;display:block;" tabindex="0">
<div>
<table cellspacing="0" cellpadding="0" style="width:100%;">
<tbody>
<tr>
<td>
<div id="cubek1z1" class="nrf03d0190-m">
<table class="nrf03d0190-n" cellpadding="0">
<tbody>
<tr>
<td class="nrf03d0190-5" onmouseover="if(window._f$0)_f$4(this)">
<img class="nrf03d0190-0" alt="" src="/WebResource.axd?d=M7gWkIUDj3IRN9CBh9GLLzF4VuNso-dKy3Rotx5PGdC0uT3ydQno5rIb-NZmtrRHU0LzVzM8VyBHLkbIFzfsDBifsXik5X8cfF8dTTpyh1L9n2Y-L0bYn1s4tciLXrau0&t=634787380317074324">
</td>
<td onmouseover="if(window._f$0)_f$5(this)">
<img class="nrf03d0190-0" alt="" src="/WebResource.axd?d=7sz-askeAWhF9r519BFO7s5XwSCLvPpgGPOJYyJ_GLevh8OESKMb_rEoVjUoei4tRoBBcLE2t0k2ici5YCEklBIiUx9pRM4ms_q18X9HGDBhaxHQlS5wQ5h-v7WaMEtq0&t=634787380317074324">
</td>
<td class="nrf03d0190-7">
<div class="nrf03d0190-l" onmouseover="if(window._f$0)_f$2(this)">All Locations</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<div style="visibility:hidden;font-size:1px;background-color:Silver;height:7px;" onmouseout="if(window._f$0)_f$50(this)" onmouseover="if(window._f$0)_f$4Z(this)"> </div>
</td>
</tr>
</tbody>
</table>
</div>
</div>

目前我知道以下工作: //div [。='所有地点'] // tr / td [2] // img

该语法将返回正确的第二个图像。然而,我想要做的是返回相同的图像,但也使用主div id(即Template_ctl16_ctl01_Lo​​cation1_TreeView)进行限定,它需要以这种方式完成,因为网页中将有第二个表具有相同的内部文本值。

阅读了不少xpath文档但未能将父函数和这方面分开。

这是我目前的硒代码: var allLocationChkBox =                 WebBrowser.Current.FindElement(By.XPath(“// div [。='All Locations'] // td [2] // img”));             allLocationChkBox.Click();

在点击复选框之前,只需要将qualiyfing主div id添加到变量中。

任何能够阐明这一点的人?

由于

enter image description here

1 个答案:

答案 0 :(得分:0)

我尝试使用你在帖子中提供的XPath,但它并没有抓住任何东西。

根据您发布的结构,尝试以下XPath:

"//table[contains(@id, 'Table1')]/*/*/td[2]"

这将为您提供包含您正在寻找的图像的td。您需要做的就是将“Table1”更改为您要与之交互的表的ID。如果您正在使用的所有表的结构相同,则此方法应该有效。

如果您想更精确,可以使用以下内容:

"//table[contains(@id, 'Table1')]/*/*/td[contains(@class, 'foo2')]"

这将获得相同的td,但它会更精细调整。您需要更改表ID和td的类,因为它们似乎对于每个td都不同。

让我知道这是否有效,或者它是不是你正在寻找的。