2016-06-10 134 views
1

我試圖點擊「先生」drop down list我試過了一些東西的組合,但他們似乎沒有工作。Watir如何點擊嵌套元素

我甚至試過xpath這通常是可靠的,但對於這種情況下它的失敗。

$browser.element(:xpath, "/html/body/div[1]/div[1]/div[1]/div/div[2]/div[1]/div[2]/div/div[2]/div/div[2]/div[2]/form/div[2]/div/div[2]/div/div/div/div/div/ul/li[2]/a").click 

click on MR

回答

1

xPath是位置取決於element位置..如果elements是改變自己的立場意味着頁面上的一些動作之後加入一些elements將無法​​正常工作。

看到你的附件圖片我已經產生了如下以下xPath後: -

//ul[contains(@class, 'dropdown-menu')]/descendant::span[contains(.,'Mr')]/parent::a 

嘗試用這種xPath ..也許它會工作... :)

+0

謝謝Saurabh,工作完美!是否有任何文檔我可以閱讀關於此,我有更多的場景,這將派上用場 –

+0

@JosephKouroma是的,你可以按照這些鏈接瞭解'xpath語法'http://www.w3schools.com/xsl /xpath_syntax.asp和'xpath axes' http://www.w3schools.com/xsl/xpath_axes.asp –

+0

@JosephKouroma請不要忘記接受答案,如果它有幫助.. :) –

4

中的XPath通過SAURABH建議

$browser.ul(class: 'dropdown-menu').link(text: 'Mr').click 

注意,這裏假設只有一個:野牛,可以使用寫在一個更可讀的Watir般的時尚元素與類dropdown-menu。如果有多個,您需要使用DOM中可能存在較高元素的搜索範圍來搜索特定的下拉菜單。

不過,鑑於可能的原因是文本「先生」只有一個鏈接,你也許可以用簡單的逃脫:

$browser.link(text: 'Mr').click 

鑑於鏈接是從隱藏到可見的切換對話框,您可能需要還等着:

$browser.link(text: 'Mr').when_present.click 
+0

$ browser.link(text:'先生')。when_present.click工作很好的非常乾淨的代碼以及! –