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

我正在尝试使用 Selenium 来检查/监视用户使用的选项卡。但我发现驱动程序总是只监视浏览器打开后的第一个选项卡。

我试着用这个

driver.current_window_handle

它显示了窗口名称,但并不完全是用户实际使用的选项卡。除非我这样做,否则它始终是第一个选项卡 driver.swith_to_window 另外,我尝试使用

handles = driver.window_handles

然后对句柄中的每个句柄执行此操作

driver.swith_to_window(handle)

但这会中断用户的操作,因为浏览器会一一切换标签页。

是否可以通过 webdriver 或 selenium 获取当前选项卡用户实际查看的窗口句柄、标题或索引?

场景:

  1. python打开浏览器

  2. 用户打开选项卡 1、选项卡 2、选项卡 3 并访问网站

  3. 用户视图 tab2

  4. selenium 从 tab2 获取数据

  5. 用户视图 tab1

  6. selenium 从 tab1 获取数据

  7. 用户视图 tab3

  8. selenium 从 tab3 ...等获取数据

目前我只能从 tab1 获取数据。如果用户查看 tab2,除非我 switch_to_window,否则 selenium 什么也不做。但我不知道用户正在查看哪一个标签。


达令说
浏览 154回答 3
3回答

慕少森

是的,这是可能的。要切换窗口,请.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)

慕标琳琳

我很好奇为什么不直接切换到标签,因为你可能知道 id它会比循环快得多driver.switch_to_window(句柄)

胡说叔叔

不用一个个切换tab,直接给出需要的tab号即可。driver.switch_to_window(1)//1是标签ID
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python