0

アクセスできる要素の階層の上にあるDOM要素にアクセスしたい。

添付のスクリーンショットで、#ntsDiv_1のグランドグランドグランドペアレントである#pRow_22にアクセスしたいと思います。しかし、私は#ntsDiv_1にしかアクセスできません。そのようなシナリオで何をすべきかを教えてください

ここに画像の説明を入力してください

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>

4

2 に答える 2

5

xpathを使用してみてください

.//a[contains(@id,'ntsLink_1')]/ancestor::tr
于 2013-02-25T10:56:26.120 に答える
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)

ここで、div4にアクセスします

:div3とdiv4は同じレベルであり、これら2つはdiv 2の子であり、親はdiv1です。

クラス4にアクセスしたい

xpathを使用して実行しますが、div 4のクラスは一意ではなく、クラス1は一意であるため、次のようにトラバースできます。

By.xpath( ".// div [@ class = '1'] / div / div [2]")

説明:div [2]は、クラス3のdivを持ち、その子がクラス3とクラス4の2つのdivを持つクラス1にアクセスすることを意味しますが、クラス4を持つ2番目のdivにアクセスしたいので、div [ 2]。

cssSelector

パスにアクセスできない場合があるため、cssセレクターを使用してパスにアクセスできます。そのようなシナリオがあるとします。

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

テキストのクラスにアクセスするには

By.cssSelectorを次のように使用します。

By.cssSelector( "text [class = '3']");

于 2016-11-24T09:19:36.810 に答える