2016-06-19 8 views
0

xPathをSeleniumで使用する場合、条件付きの親ノードに続く要素を探したいと思います。しかし、私は複数のノードの可能性があるを探すことを望みます。xPath:複数の次の要素が存在する場合はそれを選択します(OR)

spanまたはpいずれかとして、条件付きノード以下の要素を選択する方法はあり、それらの 1の場合は、存在していますか?

try: 
    elmnt = driver.find_element_by_xpath(
             ("//*[text()[contains(., 'myConditionString')]]" + 
             "/following::span or following::p") #← Find this 
             ).text 
except: 
    pass 
else: 
    print elmnt 

XPathは、両方を探している必要があります。

<root> 
    <b>myConditionString</b> 
     <span>Find me!</span> 
</root> 

この同時に:

<root> 
    <b>myConditionString</b> 

    <p>Find me!</p> 
</root> 
+0

「HTML」サンプルコードを開き、 'find 'するターゲット要素を指定しますか? – Andersson

答えて

1

XPathを、次の試してみて、それがまだ修正されていない場合、私に知らせて:

driver.find_element_by_xpath('//b[text()="myConditionString"]/span[text()="Find me!"] | //b[text()="myConditionString"]/p[text()="Find me!"]') 
+0

'driver.find_element_by_xpath( '// b [text()=" myConditionString "]/span | p [text()=" Find me! "]''も有効である必要があります – Andersson

+0

long OR条件を短縮するにはこのスレッドを参照してください:https://stackoverflow.com/questions/37910443/how-to-shorten-long-xpath-expressions-with-many-or-alternatives/37911265#37911265 – Winterflags

関連する問題