2017-05-19 10 views
0

のテキストを検索する方法:私はクラスの「クラス1」を使用して、私のhtml内のいくつかのdiv要素を持っているとしてセレンwebdriverを/ XPathの:属性によって要素とhtmlを考えるとその子

<div class="class1"> 
    <div class="class2">1 2 3</div> 
    <div class="class3">a b c</div> 
</div> 

は何も持っていませんid私は、この親要素をその子のテキストで見つけたり取り出したりしたいと思います。

私は

By.xpath("//div[contains(@class, 'class1') " 
    + "and text()[contains(.,'1 2 3')] " 
    + "and text()[contains(.,'a b c')]]")); 

のような種々の変形を試みたが、まだ何も動いていないようにみえ。

上記の例では、class1要素のテキストはチェックされていますが、その子はチェックされていないと思います。

誰でも手伝いできますか?

答えて

1

class1divを探していて、テキストが1 2 3a b cの子を持っているとします。あなたが試したもののあなたの例から、私は子供たちには何の更なる条件(例えばクラス)が存在しないと仮定しています:

//div[@class='class1' and div/text()='1 2 3' and div/text()='a b c'] 

あなたがするかどうかを気にしない場合は、*にそれらの子ノード名を作ることができます彼らはdivであるかどうか。直接の子である必要がない場合は、子ノード名の接頭辞をdescendant::にすることができます。

+0

が試さ見つけますし、それが優れた作品。どうもありがとう! – StephanM

1

下記のいずれかのxpathを試してみてください。

<div>タグのクラス属性を使用します。

//div[@class='class2']/..//div[@class='class3']/..//parent::div[@class='class1'] 

のXPathの説明:まず<div>タグのclass属性を使用して、子要素の両方を検索し、class属性と一緒に<div>タグでparentキーワードを進めます。 <div>タグと共にテキストのメソッドを使用して

OR

//div[text()= '1 2 3']/..//div[text()= 'a b c']/..//parent::div[@class='class1'] 

のXPathの説明:まず<div>タグのtext方法を使用して、両方の子要素を検索し、class属性と一緒に<div>タグでparentキーワードを進めます。 xpath上記

これらはあなたの親要素<div class="class1">

関連する問題