使用selenium在DOM层次结构中向上移动

时间:2013-02-25 10:21:28

标签: dom selenium webdriver

我想访问层次结构上方的DOM元素,以访问我有权访问的元素。

在Attached ScreenShot中,我想访问#ntsDiv_1的Grand Grand Grand Parent的#pRow_22。但我只能访问#ntsDiv_1。请建议我在这种情况下做什么

enter image description here

html代码是这样的: -

<tr id="pRow_22" style="border-bottom: 0;">
<td class="nameCell" style="border-bottom: 1px solid #CCCCCC;">
    <div id="seller_22" class="product-sellercell">
        <a id="pLogoLink_22" target="_blank" href="/norob/ClickTracker.somethins..." onclick="setMerchLb('eComElectronics.com')" rel="nofollow">
        <div>
            <a id="ntsLink_1" rel="nofollow" onclick="return false;" href="#">
        </div>
        <div id="ntsDiv_1" class="mlt-pop-container" style="width: 250px; text-align: left; white-space: normal; top: 2340px; left: 131px; visibility: hidden;">
            <div class="mlt-pop-bg">
        </div>
        .
        .   
        </div>
</td>

 

2 个答案:

答案 0 :(得分:5)

尝试使用xpath

.//a[contains(@id,'ntsLink_1')]/ancestor::tr

答案 1 :(得分:1)

试试这个

By.cssSelector( “一个[ID = 'ntsdiv_1']”)

假设这是层次结构:

<div class="1">............  (suppose it's div 1 open)
  <div class="2">........    (div 2 open)
     <div class="3">.......  (div 3 open)
     </div>.....             (div 3 closed)  
     <div class="4">......   (div 4 open)  
     </div>.....             (div 4 closed)
   </div>.........           (div 2 closed)
</div>.........              (div 1 closed)

现在,我们想要访问div 4

注意:div 3和div 4属于同一级别,这两个是div 2的子级,其父级为div 1

我们想要访问第4类

我们使用xpath做它但是div 4的类不是唯一的而且类1是,所以你可以这样遍历它:

By.xpath( “.// DIV [@类= '1'] / DIV / DIV [2]”)

解释:div [2]意味着它将访问类1,它具有类3的div,其子类有两个div类class 3和class 4但我想访问第二个div有4级,所以div [2]。

<强> cssSelector

有时我们无法访问路径,因此我们可以使用css选择器访问它,假设我们有一个这样的场景

<div class="1">
    <rect class="2">
         <text class="3">
         </text>
    </rect>
</div>

访问文本类

我们使用By.cssSelector作为:

By.cssSelector( “文本[类= '3']”);