python + selenium + chrome 如何打开新窗口,并实现窗口切换
2018-01-30 16:15
876 查看
python + selenium + chrome 如何打开新窗口,并实现窗口切换
1. 背景
在使用selenium时,经常会有打开一个新的窗口的需求,下面会提供几种窗口切换的思路。2. 环境
python 3.6.1系统:win7
IDE:pycharm
安装过chrome浏览器
配置好chromedriver
selenium 3.7.0
3. 代码:打开窗口并实现窗口切换
源代码如下:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait import time browser = webdriver.Chrome() browser.set_window_size(900, 900) # 根据桌面分辨率来定 # 打开淘宝页面 browser.get("https://www.taobao.com/") # 获取淘宝页面的 title和handle信息 taobaoWindowHandle = browser.current_window_handle taobaoTitle = browser.title print(f"1. taobaoTitle = {taobaoTitle}, taobaoWindowHandle = {taobaoWindowHandle}") # 打开路由器配置页面 http://172.16.0.1 js = 'window.open("http://172.16.0.1");' browser.execute_script(js) time.sleep(2) # 如果没有switch做窗口切换的话,即使有打开新的窗口,浏览器还是会focus在原来的窗口 print(f"2. routing Configure Page had been opened, currentTitle = {browser.title}, currentHandle = {browser.current_window_handle}") # 拿到所有的窗口 allHandles = browser.window_handles print(f"3. allHandles = {allHandles}") # 第一种思路:按照handle,从淘宝窗口切换到路由器配置窗口 routeWindowHandle = 0 routeTitle = 'None' for handle in allHandles: if handle != browser.current_window_handle: browser.switch_to_window(handle) routeWindowHandle = browser.current_window_handle routeTitle = browser.title break print(f"4. switch to routeWindow, routeWindowHandle = {routeWindowHandle}, routeTitle = {routeTitle}, currentHandle = {browser.current_window_handle}, currentTitle = {browser.title}") # 第二种思路:当然还有一种方法是根据窗口的title进行切换 # 从路由器配置窗口,切换回淘宝窗口 for handle in allHandles: if browser.title.find("淘宝网") == -1: browser.switch_to_window(handle) print(f"5. switch to taobaoWindow, taobaoWindowHandle = {taobaoWindowHandle}, taobaoTitle = {taobaoTitle}, currentHandle = {browser.current_window_handle}, currentTitle = {browser.title}") time.sleep(30) # 第三种思路:按照 abf2 windowHandle切换,切换到taobao窗口 browser.switch_to_window(taobaoWindowHandle) print(f"6. switch back to taobao window, currentHandle = {browser.current_window_handle}, taobaoWindowHandle = {taobaoWindowHandle}, routeWindowHandle = {routeWindowHandle}") time.sleep(10) browser.quit()
打印信息:
1. taobaoTitle = 淘宝网 - 淘!我喜欢, taobaoWindowHandle = CDwindow-(554828D35C91C3EE5F7F65E644C62E9F) 2. routing Configure Page had been opened, currentTitle = 淘宝网 - 淘!我喜欢, currentHandle = CDwindow-(554828D35C91C3EE5F7F65E644C62E9F) 3. allHandles = ['CDwindow-(554828D35C91C3EE5F7F65E644C62E9F)', 'CDwindow-(AD029E3FACA3A3A61640770E7FC36F81)'] 4. switch to routeWindow, routeWindowHandle = CDwindow-(AD029E3FACA3A3A61640770E7FC36F81), routeTitle = 登录, currentHandle = CDwindow-(AD029E3FACA3A3A61640770E7FC36F81), currentTitle = 登录 5. switch to taobaoWindow, taobaoWindowHandle = CDwindow-(554828D35C91C3EE5F7F65E644C62E9F), taobaoTitle = 淘宝网 - 淘!我喜欢, currentHandle = CDwindow-(554828D35C91C3EE5F7F65E644C62E9F), currentTitle = 淘宝网 - 淘!我喜欢 6. switch back to taobao window, currentHandle = CDwindow-(554828D35C91C3EE5F7F65E644C62E9F), taobaoWindowHandle = CDwindow-(554828D35C91C3EE5F7F65E644C62E9F), routeWindowHandle = CDwindow-(AD029E3FACA3A3A61640770E7FC36F81)
相关文章推荐
- python selenium 如何切换到链接新打开的窗口
- 使用python通过selenium模拟打开chrome窗口报错 出现 "您使用的是不受支持的命令行标记:--ignore-certificate-errors
- 如何在同一窗口打开多个终端并实现快捷键切换
- 如何在同一窗口打开多个终端并实现快捷键切换
- 4000 基于python的selenium实现多窗口切换
- Python+Selenium实现浏览器爬虫多窗口切换
- python selenium打开新窗口,多窗口切换
- Selenium如何实现窗口句柄的切换
- 使用selenium+python;在页面A点击一个按钮跳转到页面B,页面A没有关闭,浏览器打开了一个B,切换窗口定位页面B的元素
- 基于python的selenium实现多窗口切换
- python selenium打开新窗口,多窗口切换
- selenium WebDriver之切换到链接打开的新浏览器窗口
- [code] python+selenium实现打开一个网页
- [Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图
- JS打开文件另存为窗口如何实现
- Selenium 远程打开chrome (java实现)
- 跳转菜单如何实现新窗口打开连接
- 如何实现MindMapper窗口视图切换
- ajax怎么打开新窗口具体如何实现
- 如何用CSS实现在新窗口打开链接?