如何使用Selenium获取浏览器第二个标签页的URL?
解决Selenium获取新标签页URL的问题
问题出在:Selenium默认会将焦点保持在最初打开的标签页上,哪怕新标签页已经打开,驱动的上下文仍停留在原标签页,所以driver.current_url返回的始终是第一个页面的地址。
要获取第二个标签页的URL,需要手动切换到新标签页的窗口句柄,具体步骤如下:
- 在触发新标签页打开的操作后,等待新窗口加载完成(确保窗口数量变为2)
- 获取所有窗口的句柄列表
- 切换到第二个标签页的句柄
- 再获取当前URL
修改后的关键代码片段
# 点击打开新标签页的操作 driver.execute_script("arguments[0].click();", waitWD.until(EC.element_to_be_clickable((By.XPATH, f'(//a[contains(text(), "Double E")])[{1}]')))) # 等待新标签页加载,确保窗口数量变为2 waitWD.until(EC.number_of_windows_to_be(2)) # 获取所有窗口的句柄列表 window_handles = driver.window_handles # 切换到第二个标签页(列表索引从0开始,第二个标签页对应索引1) driver.switch_to.window(window_handles[1]) # 现在获取的就是新标签页的URL currentURL = driver.current_url print(currentURL) input("Press!")
如果之后需要切回原来的标签页,只需执行:
driver.switch_to.window(window_handles[0])
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

