2017-03-03 130 views
1

有沒有辦法獲得匹配元素f.e的索引。讓說我有一個表,請使用以下XPath表達式的內容找到元素:獲取匹配元素的索引?

//table/thead/tr/th[contains(.,'blah')] 

我想知道匹配的「日」元素的索引?即它是第一個細胞還是第二個細胞或..第n個細胞。

回答

2

你可以嘗試實現下面的代碼(例如Python):

all_elements = driver.find_elements_by_xpath('//table/thead/tr/th') 
target_element = driver.find_element_by_xpath('//table/thead/tr/th[contains(.,"blah")]') 
print(all_elements.index(target_element)) 

Pythonlist具有內置的方法index()允許獲得元素的索引列表中。讓我知道你是否需要另一種編程語言的解決方案

+0

謝謝,會試試看。我用java來做,但沒有必要舉例說明我的觀點。我也想知道是否有辦法純粹在xpath中,但即使如此,我沒有看到我怎麼可以得到整數。 .findElement()返回webElement不是整數。 – user1019129

+2

哦,我明白了......你可以嘗試計算一些前面的元素:'count(// table/thead/tr/th [contains(。,「blah」)]/before-sibling :: th)' 。這是純粹的'XPath'語法 – Andersson

0

我在ruby中使用了相同的功能。但在Java你可以嘗試這樣的事情在Java

String path = driver.findElement(By.xpath("//th[contains(.,'blah')]")).toString(); 
String lastElement = path.substring(path.lastIndexOf('/') + 1); 

而且讓你的th的計數我使用ruby下面的代碼:

int columnNo = lastElement .match(/(?<=\[).+?(?=\])/).to_s.to_i 

可以在java使用適當的代碼。如有任何類型錯誤,請糾正。我不是一個java的傢伙。