2013-11-15 39 views
0

出於某種原因,這不是爲我工作webdriver的XPath的多個匹配

driver.findElement(By.xpath("//textarea[@id[contains(., 'explanation')]] or input[@id[contains(., 'notes')]]")).sendKeys("auto-generated text"); 

我在哪裏可以找到的語法規則連接多個匹配條件?

編輯:只是複製解釋我的問題>

我想XPath來匹配根據頁面上的元素之一進行測試。兩頁有不同的元素與不同的id和標籤,所以在一種情況下,它會匹配「textarea」,在另一個「輸入」中匹配。我可以用一個if語句解決這個問題,但是我只是好奇xpath是否可以在這種情況下工作。

+0

最好不要把它們都放在你的選擇。只需使用一個if/else。 KISS原則。 –

+0

是的,我最終使用if/else。 – casper

回答

1

or運算符是布爾運算符,不能在此處使用。我假設您需要由|運算符表示的節點集合的並集。請注意,當您進行替換時,您必須考慮兩個標籤textareainput的嵌套層次是如何相互關聯的。

+0

我希望xpath根據正在測試的頁面匹配其中一個元素。兩頁有不同的元素與不同的id和標籤,所以在一種情況下,它會匹配「textarea」,在另一個「輸入」中匹配。我可以用一個if語句解決這個問題,但是我只是好奇xpath是否可以在這種情況下工作。看起來不像替換或用|改變一切...... – casper

1

//*[((name(.)='textarea') and contains(@id,'explanation')) or ((name(.)='input') and contains(@id,'notes'))]應該工作,但我不能決定它是否比if ;-)