使用find_element_by_xpath(Selenium,Python)从页面显示表数据

时间:2013-01-05 14:24:19

标签: python html selenium html-table

我正在尝试弄清楚如何使用find_element_by_xpath()在页面上查找表格元素并显示或打印它们。

以下是页面信息的摘要:

<tbody id="listContainer_databody">  
            <tr id="listContainer_row:0" class=""><th  scope="row" class="" valign="top"></th>
                <td  class="" valign="top">2012Fall-ACC1300-01</td>
                     <td  class="" valign="top">INTRO TO FINANCIAL ACCOUNTING</td>
                     <td  class="" valign="top">3/2/12 1:03 PM</td>
                     <td  class="" valign="top">jdoe</td>
                     <td  class="" valign="top">Jane Doe</td>
                     <td  class="" valign="top">2012Fall_CRS</td>
            </tr>

我找不到任何显示如何实际执行此操作的内容,因此我可以像这样打印出来:

                     2012Fall-ACC1300-01
                     INTRO TO FINANCIAL ACCOUNTING
                     3/2/12 1:03 PM
                     jdoe
                     Jane Doe
                     2012Fall_CRS

到目前为止我在Python中的代码没有给我一个错误,但我似乎无法显示我想要的结果或至少一些信息:

try:
xpath = '//*[@id="listContainer_databody"]'
    xpath2 = '//*[@id="listContainer_row:0"]/td[2]' 
results = browser.find_element_by_xpath(xpath2)
print results.get_attribute('td[2]')

except NoSuchElementException:
 assert 0, "can't find xpath"

2 个答案:

答案 0 :(得分:0)

您的xpath(xpath2)不正确。您应该使用'//*[@id="listContainer_row:0"]/td'作为xpath,它将返回Web元素列表。您可能需要使用find_elements_by_xpath,迭代Web元素并在每个M上使用get_text()方法。

答案 1 :(得分:0)

我搞定了!以下代码:

xpath = '//*[@id="listContainer_row:0"]/td'
for i in browser.find_elements_by_xpath(xpath):
    print (i.text)

产生以下结果:

                 2012Fall-ACC1300-01
                 INTRO TO FINANCIAL ACCOUNTING
                 3/2/12 1:03 PM
                 jdoe
                 Jane Doe
                 2012Fall_CRS

documentation HERE有帮助!