2016-10-04 67 views
0

这里的标签索引/位置是HTML块:获取硒使用文本的webdriver

<tbody> 
<tr> 
    <td><td> 
    <td> 
    <img src="../imgs.gif"> 
    <td> 
    <td><td> 
    <td><td> 
    <td><td> 
</tr> 
</tbody> 

我想遍历< TD>属性和并得到< IMG>的索引位置属性。在这种情况下,输出应该是“1”

尝试了很多的XPath策略,包括指数的(),COUNT(),etree等

正如我怀疑,下面应该接近。

from selenium import webdriver 

chrome_path = r"E:\chromedriver_win32\chromedriver.exe" 
browser = webdriver.Chrome(chrome_path) 

td = browser.find_element_by_xpath("//tbody//tr//td") 
target = td.find_element_by_xpath("*[. = '../imgs.gif']") 
children = td.find_elements_by_xpath("*") 
print children.index(target) 
+0

'index-of()'应该可以工作,但是它的索引是1,所以你需要在你的情况下减1。你的结果与索引有什么关系? –

+0

html = browser.page_source tree = lxml.html.fromstring(html) tree.xpath(“index-of(// tbody // tr // td,//img[.='../imgs.gif '])“) 返回XPathEvalErorr:未注册的函数 我猜index-of()只能用Xpath 2.0进行编译 –

回答

1

如何识别图像并计算前面的td兄弟并添加一个到它。

$x("count(//img/parent::td/preceding-sibling::td) + 1") 
0

尝试了一些有效的方法。

html = browser.page_source 
    tree = lxml.html.fromstring(html) 
    re = tree.xpath("//tbody//tr//td") 
    for i in range(0, len(re)): 
     res = re[i].xpath(".//img//@src") 
     for img in res: 
      print repr(img) 
      print "img number in list:", i