python - Selenium:从新打开的选项卡中抓取数据
问题描述
我正在从一个有 20 个链接的页面上抓取数据,每个链接都会打开一个格式相同的新标签。Selenium 单击第一个链接,该链接在新选项卡中打开,但随后尝试从初始选项卡中抓取。
相关代码:
for y in range(1):
table = browser.find_element_by_xpath("//table[@summary='Sections']//tbody")
rows = table.find_elements_by_tag_name('tr')
for row in rows:
if row.find_elements_by_tag_name('td'):
linktext = row.find_elements_by_tag_name('td')[3].text
print(linktext)
browser.find_element_by_link_text(linktext).click()
time.sleep(5)
title = browser.find_element_by_xpath("//p[@id='VAR1']").text
section = browser.find_element_by_xpath("//p[@id='VAR2']").text
description = browser.find_element_by_xpath("//p[@id='VAR3']").text
此代码title = browser...
在线失败,因为它找不到 xpath。我确认 xpath("//p[@id='VAR1']")
存在于新打开的选项卡上。如果我改为使用仅存在于主页(而不是新打开的选项卡)上的 xpath,则该行成功并且错误移至该sections =...
行。
如何重定向 Selenium 以抓取新打开的选项卡?完成此操作后,我假设我需要将其重定向回其初始选项卡以单击下一个链接,或者至少关闭新打开的选项卡。
解决方案
您需要在驱动程序上切换窗框。
driver.switch_to.window.(driver.window_handles[-1]);
切换到最后一个窗口句柄将切换到最近打开的窗口。
推荐阅读
- tendermint - Tendermint 点对点中的广播和八卦
- javascript - 从 COLUMN_DEFAULT 中选择时,MySQL Escapes 字段的默认值
- java - 使用 getValueAt() 方法时如何避免空值?
- android - 尝试为警报对话框设置自定义 xml 文件
- mysql - 如何使用 Node Js 创建嵌套的 JSON 响应
- ios - 有类似的方式代码来使用这个 App-Prefs:root=Privacy&path=LOCATION
- sql - 在 SQL 中使用 In 和 join 有什么区别?
- c# - 如何在 Dockerfile 中正确缓存 C# dotnet 核心包?
- html - 不适用将文本与边距自动对齐到中心
- javascript - 在 ASP.Net MVC 中使用 Membership 会引发异常