2016-03-23 12 views
1

私はテキストを取得したいと思います(現在はnullですが、 109-top-dark-grey-block-ng-binding "クラスを使用します。 TabIndexとnth-childの両方が動作していません。 "2つのクラスが同じクラス名を持っている場合に2番目のクラス名を参照する方法 - セレンのwebdriverを使用して

<div class="122-top-section-btm-half"> 
    <div class="108-top-grey-m12x3"></div> 
    <div class="109-top-dark-grey-block ng-binding">ab ab xyz</div> 
</div> 

" "

<div class="d122-top-section-btm-half"> 
    <div class="108-top-grey-m12x4"></div> 
    <div class="109-top-dark-grey-block ng-binding"></div> 

"

答えて

2

更新

n番目の子が動作するはず秒のdivブロックのテキストを取得するには。私はクロームツールでローカルセレクタをテストした:

だから、

nth-child selector working in chrome web tools

あなたはJavaで:

String elementText = driver.findElement(By.cssSelector(".d122-top-section-btm-half:nth-child(2) .ng-binding")).getText(); 

はトリックを行う必要があります - ない0 - - ので、その第二子CSS spec says nth-child is 1 indexedとして。 HTMLに基づいて

旧回答

はあなたがCSSセレクタを使用することができます提供スニペット。

String elementText = driver.findElement(By.cssSelector(".d122-top-section-btm-half .109-top-dark-grey-block")).getText(); 

するか、あなたは自分の最初のdiv内ngの結合を持つ要素の後にある場合、それはきれいになります::だから、何ができる

String elementText = driver.findElement(By.cssSelector(".d122-top-section-btm-half .ng-binding")).getText(); 

どちらの要素のテキストを返します - 多分詳細はCSS Selectors Guideをご覧ください。

+0

応答のおかげで、トム。私は2番目の "109-top-dark-grey-block ng-binding"クラスを参照する方法を探しています。私が前に述べたように、私は同じ階層を2回持っています。ここでは、最初のクラス名ではなく2番目のクラス名を参照する必要があります。 – megan

+0

ちょっと - 私はそれが役立つことを希望答えを更新しました。私の唯一の他の提案ではない場合は、おそらくあなたのドライバは、ページの一部ではないと思うでしょう。 – Tom

+0

ありがとう。はい、階層は他のクラスを上に持っています。あなたが示唆したように私はユニークなインジケータをとり、変更を実装しました。それが働いた! – megan

関連する問題