【问题标题】:Selenium: Scrape Data From Newly Opened Tab [duplicate]Selenium:从新打开的选项卡中抓取数据 [重复]
【发布时间】:2020-01-29 02:50:55
【问题描述】:

我正在从一个有 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 以抓取新打开的选项卡? 完成此操作后,我假设我需要将其重定向回其初始选项卡以单击下一个链接,或者至少关闭新打开的标签页。

【问题讨论】:

  • this 可能与您有关。它描述了将焦点转移到新选项卡,然后移回的过程。

标签: python selenium


【解决方案1】:

您需要在驱动程序上切换窗口框架。

driver.switch_to.window.(driver.window_handles[-1]);

切换到最后一个窗口句柄将切换到最近打开的窗口。

【讨论】:

  • 也许你的意思是driver.switch_to.window(driver.window_handles[-1])
  • 这取决于语言。有些内置了列表运算符方法,例如Last()。但是[-1] 在功能上是一样的。
  • 问题被标记为 Python
猜你喜欢
  • 1970-01-01
  • 2019-12-01
  • 2022-01-01
  • 2019-05-26
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
相关资源
最近更新 更多