9、Selenium + Python 实现 UI 自动化测试-操作浏览器窗口
来源:互联网 发布:传销组织 知乎 编辑:程序博客网 时间:2024/06/05 17:43
好,操作浏览器标签的姊妹篇,操作浏览器窗口来了。
补充点知识:
有的文章写了
这条js语句在新标签打开新页
js = "window.open('https://www.sogou.com')"下面这条语句在新窗口打开新页
js = "window.open('https://www.sogou.com','_blank')"实测,目前selenium 和 Chrome版本并不支持
一、使用句柄
1、直接使用句柄index值去切(也适用于标签的切换)
知识点:默认打开的第一个窗口句柄是0,第二个是1
driver.switch_to.window(handles[0])
from selenium import webdriverfrom time import sleepdriver = webdriver.Chrome()driver.get('http://www.baidu.com')js = "window.open('https://www.sogou.com','_blank')" #js打开一个新窗口,打开sogoudriver.execute_script(js) #Selenium 执行js#在这里我们手动的将两个标签分离,模拟打开了两个窗口的效果sleep(5) handles = driver.window_handlesdriver.switch_to.window(handles[0])sleep(3)driver.switch_to.window(handles[1])sleep(3)driver.quit()
2、使用循环判断来切
from selenium import webdriverfrom time import sleepdriver = webdriver.Chrome()driver.get('http://www.baidu.com')js = "window.open('https://www.sogou.com','_blank')" #js打开一个新窗口,打开sogoudriver.execute_script(js) #Selenium 执行js#在这里我们手动的将两个标签分离,模拟打开了两个窗口的效果sleep(5)handle = driver.current_window_handle #这里是搜狗handles = driver.window_handlesdriver.switch_to.window(handles[0]) #切回百度sleep(3)for hle in handles: if hle != handle: #不等于搜狗 driver.switch_to.window(hle) #所以切回搜狗sleep(3)driver.quit()
现在浏览器貌似点击链接都是在新tab页打开页面(或者本页直接跳转),而不再是弹新窗口。百度了一下跟用户习惯有关系。Chrome没找到设置新窗口打开的位置,Firefox在设置中找到了,但是selenium控制的时候仍然新tab页打开。而之前看的调用js的办法并没有测试成功(知识随着时间真的会“失效”)。但是今天找到一个方法,按住shift键,点击链接,会在新窗口打开页面。
#导入webdriver包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
#实例化一个driver
driver = webdriver.Chrome()
#打开百度,注意前面的http://不能省略
driver.get("http://www.baidu.com")
#定位百度搜索框
ele = driver.find_element_by_link_text('新闻')
ActionChains(driver).key_down(value=Keys.SHIFT).perform()
ele.click()
sleep(2)
driver.quit()
- 9、Selenium + Python 实现 UI 自动化测试-操作浏览器窗口
- 8、Selenium + Python 实现 UI 自动化测试-操作浏览器标签
- 6、Selenium + Python 实现 UI 自动化测试-鼠标操作
- 7、Selenium + Python 实现 UI 自动化测试-键盘操作
- 10、Selenium + Python 实现 UI 自动化测试-操作输入框
- 12、Selenium + Python 实现 UI 自动化测试-操作下拉列表
- 13、Selenium + Python 实现 UI 自动化测试-操作表格
- 15、Selenium + Python 实现 UI 自动化测试-操作JavaScript弹窗
- 21、Selenium + Python 实现 UI 自动化测试-操作cookies
- 【Python】学习selenium自动化测试:操作浏览器
- 5、Selenium + Python 实现 UI 自动化测试-driver基本操作、属性
- 11、Selenium + Python 实现 UI 自动化测试-操作按钮、复选框
- 14、Selenium + Python 实现 UI 自动化测试-操作Frame(iFrame)
- 22、Selenium + Python 实现 UI 自动化测试-操作日期时间控件
- 26、Selenium + Python 实现 UI 自动化测试-调用 JavaScript 操作滚动条
- selenium+python自动化测试(二)--使用webdriver操作浏览器
- 1、Selenium + Python 实现 UI 自动化测试-环境搭建
- 3、Selenium + Python 实现 UI 自动化测试-元素定位
- Header组件(背景图)
- LeetCode two sum问题
- Python超过R,成为数据科学和机器学习的最常用语言
- ThreadPoolExecutor线程池参数设置技巧
- TexturePacker序列号申请
- 9、Selenium + Python 实现 UI 自动化测试-操作浏览器窗口
- Spring事务管理(转载自佚名大神)
- 手机红灯闪烁,但是无法开机
- servlet的四种响应
- swift4.0 项目中的随机校验码(验证码)
- 由于“内部错误
- opencv3+Zbar识别二维码--梯度运算
- 【linux tree】linux下tree的用法
- 12款炫酷实用的HTML5带发光动画