2016-09-16 8 views
0

私はナビゲートしようとしているページに一連の入れ子要素を持っています。要素がJava内の別の要素の子であるかどうかを確認します。

<div> 
 
    <h1 id="This is an id">The header is an identifier</h1> 
 
    <table> 
 
     <tr></tr> 
 
     <tr> 
 
     <ul> 
 
      <li> 
 
      <a> 
 
       <span>This my target</span> 
 
    </table> 
 
</div> 
 
     
 
     <h1>Also text</h1> 
 
     <a> 
 
     <span>This target has the same text<span> 
 
    

ことができる非常に劇的トップdiv要素の構造:以下のHTMLは簡易版です。私はxpathとテキストを使用して要素を見つけることを試みています。しかし、ターゲットが実際に適切なdiv内のものであることを確認することができません。毎回正確なレイアウトを知らなければ、何とかDOMツリーをスケールアップする方法があれば?あなたは、あなたが最初のdivを特定する必要があり、特定のdivの中身をチェックする必要がある場合は

//div//*[contains(text(), 'my text')] 

+0

を使用あなたはdiv要素を特定する必要がありますか?またはテキストの要素は? – lauda

+0

私はテキストを探すためにページをスキャンしていますが、私が見つけたテキストがその外にないdivのものであることを確認する必要があります。問題は、DOMレイアウトが実行時に変更されるので、先にその範囲内のスパンがどのくらい下がっているかが分かりません。 – Jrawr

+0

どのdivが正しいか分かりますか? – JeffC

答えて

0

はdiv要素内のテキストをチェックするための次のようなパスを構成することができます。例えば

div要素がclass="my_class"のような属性を持っているならば、使用します。

//div[@class='my_class']//*[contains(text(), 'my text')] 

あなたはCSSセレクタで>操作を使用して試すことができますw3schools xpath syntax

+0

[syntax(text()、 'text')]がどれほど深いところにあるかわからない場合、*構文が機能しますか? – Jrawr

+0

*は任意のタグを選択します。//できるだけ下に移動します – lauda

1

の詳細パスの例を見つけることができます。

例:アクセス"This my target"に、あなたは driver.findElement(By.cssSelector("li>a>span"));

関連する問題