2013-02-25 72 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']」);