【问题标题】:How to use driver.current_url on a new tab opened by .click() on Selenium for Python如何在 Selenium for Python 上由 .click() 打开的新选项卡上使用 driver.current_url
【发布时间】:2019-11-27 18:50:40
【问题描述】:

我正在编写一个 python 脚本,它使用 BeautifulSoup 进行网络抓取,然后使用 Selenium 来导航站点。在链接上使用 .click() 导航到另一个站点后,我想使用 .current_url 来获取用于制作精美汤的站点 url。问题是 .click() 在新选项卡中打开链接,所以当我使用 current_url 时,我得到了原始网站的 url。

我尝试使用:

second_driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)

更改选项卡但它对 current_url 函数没有影响,因此它不起作用。

简化代码:

second_driver = webdriver.Firefox()
second_driver.get(<the original url>)

time.sleep(1)

second_driver.find_element_by_class_name(<html for button that opens new tab >).click()

time.sleep(1)

url=second_driver.current_url

所以我希望 url 成为点击后的新网站而不是原始 url

谢谢你,如果很明显我是初学者,我很抱歉。

【问题讨论】:

    标签: python html selenium selenium-webdriver beautifulsoup


    【解决方案1】:

    您需要切换到新标签。 webrdiver.window_handles 是打开的选项卡/窗口的列表。这个 sn-p 会将您切换到第二个打开的句柄。 如果您想回到您开始的地方,请使用 [0]。如果您想始终转到最后打开的选项卡,请使用 [-1]。如果您尝试在 window_handles[1] 存在之前切换到它,则会引发 IndexError。

    webdriver.switch_to_window(webdriver.window_handles[1])
    

    【讨论】:

    • 谢谢,效果很好,不敢相信当我查看文档时这并没有引起我的注意。
    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2015-08-31
    • 1970-01-01
    相关资源
    最近更新 更多