python - 是否可以使用 webdriver/Selenium 来获取用户实际查看的当前选项卡
问题描述
我正在尝试使用 Selenium 来检查/监视用户使用的选项卡。但我发现驱动程序总是只监视浏览器打开后的第一个选项卡。
我试着用这个
driver.current_window_handle
它显示了窗口名称,但并不完全是用户实际使用的选项卡。除非我这样做,否则它始终是第一个选项卡 driver.swith_to_window
另外,我尝试使用
handles = driver.window_handles
然后对句柄中的每个句柄执行此操作
driver.swith_to_window(handle)
但这会中断用户的操作,因为浏览器会一一切换标签页。
是否可以通过 webdriver 或 selenium 获取当前选项卡用户实际查看的窗口句柄、标题或索引?
场景:
- python打开浏览器
- 用户打开选项卡 1、选项卡 2、选项卡 3 并访问网站
- 用户视图 tab2
- selenium 从 tab2 获取数据
- 用户视图 tab1
- selenium 从 tab1 获取数据
- 用户视图 tab3
- selenium 从 tab3 ...等获取数据
目前我只能从 tab1 获取数据。如果用户查看 tab2,除非我 switch_to_window,否则 selenium 什么也不做。但我不知道用户正在查看哪一个标签。
解决方案
是的,这是可能的。
要切换窗口,请.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)
推荐阅读
- javascript - 在 div 滚动到视图中运行 CSS 动画的 Vanilla JavaScript 不起作用
- python-3.x - “请求的技能响应有问题”在 Alexa 开发者控制台中
- angular - 如何检测绑定属性的值在角度 4 中发生了变化
- javascript - 如何使用 Reactjs fetch 将 POST 数据发送到烧瓶
- windows - 使用预加载命令打开命令提示符的快捷方式
- c++ - 如何使用 C++ 在 HDFS 上编写 Parquet 文件?
- jquery - 获取两个值之间的百分比差异(多个实例)
- php - WordPress body_class() 不添加 CSS 类
- javascript - 使用 AWS 开发工具包返回多个 S3 对象的内容
- javascript - Jquery - 如何按纬度和经度获取位置名称详细信息