首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用硒迭代tr中的tr

用硒迭代tr中的tr
EN

Stack Overflow用户
提问于 2018-02-23 10:13:02
回答 3查看 4.5K关注 0票数 2

设置

我的WordPress后端中有一个有几行的表。每行包含一个我想使用Selenium打开的链接。

也就是说,我想循环遍历<tbody>中的每个<tbody>

browser被定义为,

browser = webdriver.Firefox(executable_path='mypath')

<tbody>有通常的形式,

代码语言:javascript
复制
 <tbody>
    <tr>...</tr>
    ...
    <tr>...</tr>
 </tbody>

代码到目前为止

  • <tr>

导航到正确的页面后,

代码语言:javascript
复制
tbody = browser.find_element_by_css_selector('.widefat > tbody:nth-child(2)')

browser.find_element_by_xpath('//*[@title="Dutch: Add translation"]').click()

正确选择<tbody>元素,并正确打开第一个<tr>的右链接。

  • <tr>上循环

我不知道如何在<tr>中的所有<tbody>上成功地循环这个。

我试过以下几种方法

代码语言:javascript
复制
tbody = browser.find_element_by_css_selector('.widefat > tbody:nth-child(2)')

for row in tbody.find_element_by_xpath('./tr'):
    browser.find_element_by_xpath('//*[@title="Dutch: Add translation"]').click()

但这给了TypeError: 'FirefoxWebElement' object is not iterable

显然,tbody.find_element_by_xpath('./tr')不是选择所有<tr>的正确方法。

如何正确选择所有<tr>**'s ?**

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-23 10:17:19

for row in tbody.find_element_by_xpath('./tr')打算遍历单个WebElement,而您需要遍历元素列表:

代码语言:javascript
复制
for row in tbody.find_elements_by_xpath('./tr')
票数 8
EN

Stack Overflow用户

发布于 2018-02-23 10:17:04

使用(注意s):

代码语言:javascript
复制
tbody.find_elements_by_xpath('./tr')

而不是:

代码语言:javascript
复制
tbody.find_element_by_xpath('./tr')

它只返回第一次匹配。

票数 4
EN

Stack Overflow用户

发布于 2018-10-19 06:17:38

您可以使用前面指定的find_element_by_xpath方法,但也可以使用我喜欢使用的find_elements_by_tag_name方法。

代码语言:javascript
复制
tbody_rows = tbody.find_elements_by_tag_name('tr')
for tbody_row in tbody_rows:
    #do your stuff here with each row in turn
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48945476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档