09-多窗口切换-window_handles

简介: 09-多窗口切换-window_handles

1. 常用方法

使用背景:有些网站点击链接会新打开一个tab,如下图打开了两个浏览器窗口;元素定位正确,调试时一直报错,原因是未切换到对应的窗口句柄,切换到对应的窗口句柄才可以正常操作

  • current_window_handle:获得当前窗口句柄
  • window_handles:获取所有窗口的句柄到当前会话,返回一个窗口句柄列表
  • switch_to.window():切换窗口句柄
1. # -*-coding:utf-8一*-
2. # @Time:2021/1/14
3. # @Author: 大海
4. import time
5. from selenium import webdriver
6. 
7. driver = webdriver.Chrome()
8. driver.implicitly_wait(10)
9. driver.get("http://www.baidu.com")
10. 
11. # 获得百度搜索窗口句柄
12. search_windows = driver.current_window_handle
13. print(search_windows)
14. 
15. driver.find_element_by_link_text('登录').click()
16. driver.find_element_by_link_text("立即注册").click()
17. 
18. # 获得当前所有打开的窗口的句柄
19. all_handles = driver.window_handles
20. print(all_handles)
21. 
22. # 切换到注册窗口 方式1 通过判断是否与当前窗口句柄一致
23. for handle in all_handles:
24. if handle != search_windows:
25.         driver.switch_to.window(handle)
26.         driver.find_element_by_name("userName").send_keys('我是测试小白')
27.         driver.find_element_by_name('phone').send_keys('12345678910')
28.         time.sleep(2)
29. # 后续步骤省略
30. 
31. # 切换到注册窗口 方式2 通过获取的所有窗口列表的索引切换
32. # driver.switch_to.window(all_handles[1])
33. # driver.find_element_by_name("userName").send_keys('我是测试小白')
34. # driver.find_element_by_name('phone').send_keys('12345678910')
35. # time.sleep(2)
36. 
37. driver.quit()


相关文章
electron设置window系统托盘
electron设置window系统托盘
167 0
|
6月前
|
iOS开发
清除QuickTime Player 在Dock程序右键上的历史记录
清除QuickTime Player 在Dock程序右键上的历史记录
583 2
清除QuickTime Player 在Dock程序右键上的历史记录
|
4月前
|
JavaScript 前端开发 UED
使用window.open打开新窗口的参数设置
使用window.open打开新窗口的参数设置
mac系统JavaFX的Alert没有新窗口弹出
mac系统JavaFX的Alert没有新窗口弹出
101 0
mac系统JavaFX的Alert没有新窗口弹出
为什么会有window.window这种设计
为啥要搞这个这个看起来貌似很奇葩的设计。 要解答这个问题,还得请出this,我们经常说浏览器中的全局对象是window, 这句话对了,也还没完全对。 全局对象的真实身份应该是全局作用域的this。 window只是为了便于访问this,弄出来的一个属性。
305 0
为什么会有window.window这种设计
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
354 0
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
为什么有的S4系统看不到Adapt UI按钮
为什么有的S4系统看不到Adapt UI按钮
为什么有的S4系统看不到Adapt UI按钮
|
Windows
PostMessage 向Windows窗口发送Alt组合键
PostMessage 向Windows窗口发送Alt组合键关于向Windows窗口发送Alt组合键的问题,这个真是经典问题啊,在网上找了一下,问的人N多,方法差不多,但就是没有很好解决问题。之前找到一个能正确发送的code:(Alt+A)PostMessage(hWnd,WM_SYSKEYDOWN...
1706 0