9、Selenium + Python 实现 UI 自动化测试-操作浏览器窗口

好,操作浏览器标签的姊妹篇,操作浏览器窗口来了。

补充点知识:

有的文章写了

这条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 webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
js = "window.open('https://www.sogou.com','_blank')"  #js打开一个新窗口,打开sogou
driver.execute_script(js)                       #Selenium 执行js
#在这里我们手动的将两个标签分离,模拟打开了两个窗口的效果
sleep(5) 
handles = driver.window_handles
driver.switch_to.window(handles[0])
sleep(3)
driver.switch_to.window(handles[1])
sleep(3)
driver.quit()

2、使用循环判断来切

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
js = "window.open('https://www.sogou.com','_blank')"  #js打开一个新窗口,打开sogou
driver.execute_script(js)                       #Selenium 执行js
#在这里我们手动的将两个标签分离,模拟打开了两个窗口的效果
sleep(5)
handle = driver.current_window_handle  #这里是搜狗
handles = driver.window_handles
driver.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()


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页