2013-05-22 40 views
0

我试图从一些看起来像这样抢数据:我的XPath不工作

<html> 
<table> 
    <tr> 
    <td> 
    <div> 
    <tr> 
    <td> 
    <div> 

我认为这基本上是我一直在寻找比较早,所以我做了$x('//table/tr/td/div')。这返回像10个div,所有我想要的。但是,我找不到通过这10个div进行导航的方法。难道不只是$x('//table/tr/td/div[?]'),在哪里?可以是1-10? BTW这是一个动态表,每个div是一个不同的模块来导航到页面的一部分,所以我试图自动登录和去某个模块,但我只能选择全部10个而不是单个模块。在这个html中,div 1和div 2就像“安全模块”和“票务模块”。

回答

2

首先,您可能想尝试Firefox上的Firebug + Firepath,这是一款比Chrome开发人员工具更方便的工具。

对于你的问题,你可以通过XPath或硒

做到这一点使用XPath的指数(开始从一个),说要第二:

# second div's xpath: (//table/tr/td/div)[2] 
second_div = driver.find_element_by_xpath("(//table/tr/td/div)[2]") 

使用Selenium的索引(即让所有从你的XPath,然后对其进行索引从零开始)十点的div:

all_divs = driver.find_elements_by_xpath("//table/tr/td/div") # all_divs should have 10 elements 
second_div = all_divs[1] # zero-based index 
+0

真棒,谢谢,我不能马上测试,但看起来将很好地工作 – gallly