python - 遍历 Selenium 中的表行(Python)

标签 python selenium xpath

我有一个带有表格的网页,该表格仅在我单击“检查元素”时出现,并且在“查看源代码”页面中不可见。该表仅包含两行,每行有几个单元格,看起来类似于:

<table class="datadisplaytable">
<tbody>
<tr>
<td class="dddefault">16759</td>
<td class="dddefault">MATH</td>
<td class="dddefault">123</td>
<td class="dddefault">001</td>
<td class="dddefault">Calculus</td>
<td class="dddefault"></td>
<td class="dddead"></td>
<td class="dddead"></td>
</tr>
<tr>
<td class="dddefault">16449</td>
<td class="dddefault">PHY</td>
<td class="dddefault">456</td>
<td class="dddefault">002</td>
<td class="dddefault">Physics</td>
<td class="dddefault"></td>
<td class="dddead"></td>
<td class="dddead"></td>
</tr>
</tbody>
</table>

我想做的是遍历行并返回每个单元格中包含的文本。我似乎无法用 Selenium 做到这一点。这些元素不包含 ID,我不确定如何获取它们。我不太熟悉使用 xpaths 等。

这是一个返回 TypeError 的调试尝试:

def check_grades(self):
    table = []
    for i in self.driver.find_element_by_class_name("dddefault"):
        table.append(i)
    print(table)

从行中获取文本的简单方法是什么?

最佳答案

XPath 很脆弱。最好使用 CSS 选择器或类:

mytable = find_element_by_css_selector('table.datadisplaytable')
for row in mytable.find_elements_by_css_selector('tr'):
    for cell in row.find_elements_by_tag_name('td'):
        print(cell.text)

关于python - 遍历 Selenium 中的表行(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090653/

相关文章:

java - 为什么元素只能通过 javascript 或 selenium 中的操作来点击?

javascript - 在 Protractor 中, browser.isElementPresent vs element.isPresent vs element.isElementPresent

java - Selenium Java 如何定位元素问题?

python - 如何使用 Xpath (lxml) 从多个标签中提取文本?

XSLT 查找同级是否存在

html - XPath查找其第一个子节点包含特定值的节点

python - python2.7中tf.gather_nd中的星号上升语法错误

python - 在没有实例的类对象上设置魔术方法?

python - 如何从 R 中的 xlsx 文件中检测 "strikethrough"样式

python - 当我运行不带任何选项的 `twistd` 命令时,为什么我的扭曲插件没有出现?