2016-10-04 8 views
0

のタグのインデックス/位置を取得し、HTMLの塊である:私は< を超えるTD>属性を反復処理し、そして>< IMGのインデックス位置を取得したいセレンwebdriverをテキストを使用してここで

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

属性。この場合、出力は"1"である必要があります。

)(カウント)インデックスの(を含むXPathの戦略の多くを試みたが、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を引く必要があります。 index-ofの結果はどこにありますか? –

+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兄弟を数えて1つ追加することはどうですか。

$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 
関連する問題