您的位置:首页 > 编程语言 > Python开发

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: