2013-02-21 50 views
0

我目前正在開發一些使用Selenium RC的測試。我不得不在xpath輸入和textareas中使用selenium Xpath「OR」語句。切入點。 我已經設計2周的XPathc#Selenium RC「OR」語句使用xpath

textarea的://span[text()='{0}']/parent::*/following-sibling::*//textarea

輸入://span[text()='{0}']/parent::*/following-sibling::*//input

通常使用即時通訊Selenium.Type(myXpath, 「標籤= myvalue的」);並且這兩個xpaths都可以正常工作。 問題是當我試圖合併他們。如果它是一個輸入或一個textarea,我對它沒有什麼影響,因爲這兩個方法都完全相同,因此我試圖將它們與| (或)聲明。

//span[text()='{0}']/parent::*/following-sibling::*//textarea|//input 

但不幸的是它不起作用。如果訂單是//textarea|//input它與textarea匹配,並且如果//input|//textarea它匹配輸入。我正在嘗試各種組合,但仍然沒有。我缺少括號還是一些必需的語法?感謝您的幫助。

回答

1

獲取所有節點(*),然後使用謂詞測試您想要的元素名稱。

//span[text()='{0}']/parent::*/following-sibling::*//*[local-name() = 'textarea' or local-name() = 'input'] 

如果您的XPath引擎有local-name()不支持(這似乎是與硒的一個問題,看評論),你將不得不重複完整的語句:

//span[text()='{0}']/parent::*/following-sibling::*//textarea | //span[text()='{0}']/parent::*/following-sibling::*//input 

的查詢你一直在試圖使用的相當於

(//span[text()='{0}']/parent::*/following-sibling::*//textarea) | (//input) 

這也解釋了結果o f切換textareainput

+0

不幸的是,它不適合我。我收到一個錯誤:Selenium.SeleniumException:錯誤:無效xpath [3]:XPath解析錯誤// span [文本()='Uwagi'] /父:://下 - 兄弟:: *//(textarea |輸入): // RelativeLocationPath // Expr – Shuffler 2013-02-21 10:41:39

+0

對不起,我們最好應該使用XPath 1.0 for Selenium。更新了答案,這個應該現在正常工作。 – 2013-02-21 11:17:32

+0

我收到服務器錯誤,尚未實現:Xpath函數local-name() – Shuffler 2013-02-21 11:28:30