Python 2.7 Selenium Python我可以迭代html表如何打印第3列中的值

Python 2.7 Selenium Python我可以迭代html表如何打印第3列中的值,python-2.7,selenium,selenium-webdriver,Python 2.7,Selenium,Selenium Webdriver,我有一个包含一些行和列的HTML表。我可以迭代行并打印出所有列值。 我想打印第3列中的值。我该怎么做 HTML代码段是: <table id="search_data_browser_ct_data_browser" class="GFNQNVHJE" cellspacing="0" __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true"> &

我有一个包含一些行和列的HTML表。我可以迭代行并打印出所有列值。 我想打印第3列中的值。我该怎么做

HTML代码段是:

    <table id="search_data_browser_ct_data_browser" class="GFNQNVHJE" cellspacing="0" __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true">
<thead aria-hidden="false">
<colgroup>
<tbody>
<tr class="GFNQNVHCD GFNQNVHJD" __gwt_subrow="0" __gwt_row="0">
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHED GFNQNVHKD">
<div __gwt_cell="cell-gwt-uid-193" style="outline-style:none;">
<span class="linkhover" title="31" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">31</span>
</div>
</td>
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHKD">
<div __gwt_cell="cell-gwt-uid-194" style="outline-style:none;">1</div>
</td>
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHKD">
<div __gwt_cell="cell-gwt-uid-195" style="outline-style:none;">
<span class="linkhover" title="Mr|Batman|Bane|Male" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">Mr|Batman|Bane|Male</span>
</div>
</td>
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHKD">
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHKD">
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHOD GFNQNVHKD">
</tr>
<tr class="GFNQNVHCE" __gwt_subrow="0" __gwt_row="1">
<tr class="GFNQNVHCD" __gwt_subrow="0" __gwt_row="2">
<tr class="GFNQNVHCE" __gwt_subrow="0" __gwt_row="3">
<tr class="GFNQNVHCD" __gwt_subrow="0" __gwt_row="4">
<tr class="GFNQNVHCE" __gwt_subrow="0" __gwt_row="5">
<tr class="GFNQNVHCD" __gwt_subrow="0" __gwt_row="6">
<tr class="GFNQNVHCE" __gwt_subrow="0" __gwt_row="7">
<tr class="GFNQNVHCD" __gwt_subrow="0" __gwt_row="8">
<tr class="GFNQNVHCE" __gwt_subrow="0" __gwt_row="9">
</tbody>
<tbody style="display: none;">
<tfoot style="display: none;" aria-hidden="true"/>
</table>
我试过:

print col[2].text
print col[2].text
我得到的错误是:

    Traceback (most recent call last):
  File "E:\test_runners 2 edit project\selenium_regression_test_5_1_1\LADEMO_Matching_and_Reporting_TestCase\Lademo_Matching_and_Reporting_TestCase.py", line 496, in test_000008_simple_text_search
    data_browser_page.is_results_displayed_in_data_browser()
  File "E:\test_runners 2 edit project\selenium_regression_test_5_1_1\Pages\Reports\reports_data_browser.py", line 104, in is_results_displayed_in_data_browser
    print col[2].text
TypeError: 'WebElement' object does not support indexing
我也尝试过:

for col in cols:
print cols[2].text
我得到一个错误:

    Traceback (most recent call last):
  File "E:\test_runners 2 edit project\selenium_regression_test_5_1_1\Base\BaseTestCase.py", line 174, in tearDownClass
    cls.login_page.click_logout()
  File "E:\test_runners 2 edit project\selenium_regression_test_5_1_1\Pages\login.py", line 129, in click_logout
    self.click_yes_from_confirm_dialog_to_confirm()
  File "E:\test_runners 2 edit project\selenium_regression_test_5_1_1\Pages\base.py", line 106, in click_yes_from_confirm_dialog_to_confirm
    yes_button_element = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID, 'message_dialog_b_yes')))
  File "E:\Python27\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
TimeoutException: Message: 
谢谢,里亚兹

我试过:

print col[2].text
print col[2].text
试试这个

if len(cols)>2:
    cols[2].text

在这里,我将为您提供提取所有td标签值的工作代码

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Chrome('./chromedriver')

#Open the page
driver.get('file:///.../a.html')

ele = driver.find_elements_by_xpath("//table[@id='search_data_browser_ct_data_browser']/tbody/tr")
for e in ele:
    for td in e.find_elements_by_xpath(".//td"):
        print td.text
“WebElement”对象不支持索引

实际上,
col
是一个单独的
WebElement
,当您在汇总列表时,它应该是

print cols[2].text

如果我打印列[2]。文本,我会得到索引器:列表索引超出范围

在传递索引之前,您需要检查
cols
列表长度,以克服此错误,如下所示:-

if len(cols)  >= 3 :
  print cols[2].text

您可以使用CSS选择器查找td下的节点。使用td:nth-child()语法


是否发生了任何错误?您的错误在这个代码块中,而不是您上面提到的代码
yes\u button\u element=WebDriverWait(self.driver,20)。直到(EC.element\u to\u be\u clickable((By.ID,'message\u dialog\u b\u yes'))
。奇怪的cols[2]不起作用谢谢,我有一个工作代码来打印所有列值。我想打印出第2列中的所有值。如何仅使用列2的索引打印该列中的值?打印列[2]。text会给我错误索引器错误提示:如果打印列[0],则列出索引超出范围。text会打印第一列中的所有ID值。奇怪的cols[2]不起作用。啊,它正在打印cols[2]的值。但在迭代结束时,它会说IndexError:list index超出范围,这是因为行中的某些列没有这些列。第一行中只有多个列。我想你可以很容易地用逻辑来处理这个问题。我可以给你一个特定于这个场景的解决方案,但长期的解决方案将基于你的实际数据,而不仅仅是测试数据。这对我来说很有效。不再有超出范围的索引。现在打印所有名称值。谢谢你的帮助。