2017-03-03 137 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的家伙。