2013-02-25 67 views
0

我想要访问位于层次结构上方的DOM元素,以访问我有权访问的元素。使用硒在DOM层次结构中向上移动

在Attached ScreenShot中,我想访问#pRow_22,其中#ntsDiv_1的Grand Grand Grand Parent。但我只能访问#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> 

+0

是查询父级,直到获得父级TR。 – vipin8169 2013-02-25 10:28:21

+0

我该怎么做? – vipin8169 2013-02-25 10:38:32

+0

我必须这样做,使用硒API,如何做到这一点 – vipin8169 2013-02-25 10:47:36

回答

4

尝试使用XPath

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

你可以使用abobe html snippet指定确切的路径。我不是很喜欢xpath – vipin8169 2013-02-25 11:10:16

+0

对不起,我不明白你的Adobe html片段,但如果你想使用webdriver/selenium访问基于标签的TR元素,示例是driver.findElements(By.XPATH(“.// a [包含(@ id,'ntsLink_1')]/ancestor :: tr“))。点击(或类似) – StaleElementException 2013-02-25 11:14:50

+0

好的,你能解释最后的几个单词吗,即:: :: ..等等.. – vipin8169 2013-02-25 11:15:58

1

尝试这个

By.cssSelector( “A [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是同一级别的,这两个是2区,其父母的孩子是DIV 1

我们希望访问类不使用XPath这4

我们交流,但该类DIV 4不是唯一的,并且级别1是,这样可以遍历它是这样:

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

说明:div [2]表示它将访问具有class 3的div的类1,并且其子级具有class 3和class 4的两个div但我想访问第二个有4级的div,div [2]。

cssSelector

有时我们无法访问路径,这样,我们就可以通过使用CSS选择器访问它,假设我们有一个场景是这样的

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

访问类文本

我们使用By.cssSelector为:

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