为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以使用 webdriver/Selenium 来获取用户实际查看的当前选项卡

是否可以使用 webdriver/Selenium 来获取用户实际查看的当前选项卡

达令说 2022-06-28 10:56:29
我正在尝试使用 Selenium 来检查/监视用户使用的选项卡。但我发现驱动程序总是只监视浏览器打开后的第一个选项卡。我试着用这个driver.current_window_handle它显示了窗口名称,但并不完全是用户实际使用的选项卡。除非我这样做,否则它始终是第一个选项卡 driver.swith_to_window 另外,我尝试使用handles = driver.window_handles然后对句柄中的每个句柄执行此操作driver.swith_to_window(handle)但这会中断用户的操作,因为浏览器会一一切换标签页。是否可以通过 webdriver 或 selenium 获取当前选项卡用户实际查看的窗口句柄、标题或索引?场景:python打开浏览器用户打开选项卡 1、选项卡 2、选项卡 3 并访问网站用户视图 tab2selenium 从 tab2 获取数据用户视图 tab1selenium 从 tab1 获取数据用户视图 tab3selenium 从 tab3 ...等获取数据目前我只能从 tab1 获取数据。如果用户查看 tab2,除非我 switch_to_window,否则 selenium 什么也不做。但我不知道用户正在查看哪一个标签。
查看完整描述

3 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

是的,这是可能的。


要切换窗口,请.switch_to.window改为使用.swith_to_window:


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

print(driver.current_window_handle)

[1]> 请替换为您想要的索引。


要获得标题使用:


print(driver.title)

要获取索引当前选项卡,请使用:


print(driver.window_handles.index(driver.current_window_handle))

或者for each像下面的例子一样使用循环(参考你的场景):


driver.get('https://google.com')

driver.execute_script('window.open("https://yahoo.com");')

driver.execute_script('window.open("https://gmail.com");')


for handle in driver.window_handles:

    driver.switch_to.window(handle)

    print(driver.window_handles.index(handle))

    print(handle)

    print(driver.title)


查看完整回答
反对 回复 2022-06-28
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我很好奇为什么不直接切换到标签,因为你可能知道 id

它会比循环快得多

driver.switch_to_window(句柄)


查看完整回答
反对 回复 2022-06-28
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

不用一个个切换tab,直接给出需要的tab号即可。

driver.switch_to_window(1)

//1是标签ID


查看完整回答
反对 回复 2022-06-28
  • 3 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信