2016-08-18 52 views
0

你知道你可以搜索網頁的源代碼是這樣的:watir-webdriver有一個「通配符標籤」嗎?

browser.div(:text => /foo/) 

你怎麼可以做這樣的事情:

browser.wildcard(:text => /foo/) 

我在尋找這個功能,因爲我訪問頁1具有

<tag1>foo</tag1> 

但2頁有

<tag2>foo</tag2> 

並且foo確實發生在兩頁的頁面中的其他地方。

+1

出於好奇,什麼是''和''? – orde

+0

'​​'和'',但我找到了一個不需要'element'的工作。 – Forwarding

+0

@orde,出於好奇,你爲什麼要問? – Forwarding

回答

3

元素會發現匹配,不管標籤名稱的任何元素:

browser.element(text: /foo/)

賈斯汀使得在評論一個偉大的點。將#element與正則表達式值配對將導致返回html元素。

如果你想在最後一個標記引用它(注意,這可能是一個令人望而卻步非高性能選項):

browser.element(text: /foo/, index: -1)

如果沒有嵌套跨度的任何問題,這將是略快選項:

b.element(text: /foo/, tag_name: /span|td/)

在一般情況下,這是很要好得多,以避免使用正則表達式匹配器,當你不*必須要使用它們。

+1

我認爲你必須小心這一點。如果頁面上有「foo」,它將始終返回'html'元素,這是包含文本的第一個元素。如果標籤文本已知爲「foo」,則browser.element(text:'foo')'將更安全。 –

0

xpath怎麼樣?

browser.element(xpath: "//tag1[contains(text(),'foo')]") 

如果您在網頁上,你甚至可以只有一個標籤1:

browser.element(xpath: "//tag1") 
相關問題