自动化测试第四弹:WebDriver API之浏览器控制方法
Posted 软件测试藏经阁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试第四弹:WebDriver API之浏览器控制方法相关的知识,希望对你有一定的参考价值。
webdriver提供的大量API方法方便测试、开发人员调用,其中就包括浏览器控制的相关API。
一、控制浏览器窗口大小。
希望浏览器以某种尺寸打开,让访问的网页在这种尺寸下运行,WebDriver提供的API:
Set_window_size():方法来设置浏览器的大小
minimize_window():最大化显示
minimize_window():最小化显示,在最小化情况下,也可以进行元素定位及操作
#导包、创建浏览器对象、获取一下url地址
from selenium import webdriver
import time
#driver:就是一个普通的变量,dr也行
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
#比较喜欢宽屏显示,我也要设置打开的窗口为:1920 * 600
#driver是浏览器对象
# windowHandle:一个页面的标识
# driver.set_window_size(1920,600)
#最大化显示窗口
# driver.maximize_window()
# 最小化
# time.sleep(2)
# driver.minimize_window()
# time.sleep(2)
# driver.find_element_by_id("kw").send_keys("selenium")
# driver.maximize_window()
#退出浏览器对象
# driver.quit()
二、控制浏览器后退、前进、刷新
在使用浏览器浏览网页时,浏览器提供了后退和前进按钮,可以方便的在浏览过的页面之间来回切换、刷新等,WebDriver也提供了对应的:
back()
forward()
refresh()
#导包、创建浏览器对象、获取一下url地址
from selenium import webdriver
import time
#driver:就是一个普通的变量,dr也行
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
#页面的前进后退操作
# driver.find_element_by_link_text("新闻").click()
# time.sleep(2)
# #后退到百度首页
# driver.back()
# time.sleep(2)
# #再前进到新闻页面
# driver.forward()
# time.sleep(2)
# #再执行一次刷新操作
# driver.refresh()
#退出浏览器对象
# driver.quit()
三、截屏操作
将运行的页面截图保存在本地,推荐使用png格式:
driver.save_screenshot(r"e:\abc.png")
driver.get_screenshot_as_file("{}.{}".format("e:/aaa","png"))
driver.get_screenshot_as_file(r"e:\abc.png")
#导包、创建浏览器对象、获取一下url地址
from selenium import webdriver
import time
#driver:就是一个普通的变量,dr也行
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# driver.save_screenshot(r"e:\sss.png")
# driver.get_screenshot_as_file("{}.{}".format("e:/aaa","png"))
# driver.get_screenshot_as_file(r"e:\sss.png")
#退出浏览器对象
# driver.quit()
四、模拟浏览器关闭
webdriver提供两种关闭的方法:
quit():关闭浏览器,不管页面有几个窗口,一概关掉
close():只关掉了一个当前的窗口,而且关掉的是前面的一个
08-webdriver API之浏览器操作
捉虫布道人的视频
· 253 播放
五、多窗口操作
每一个页面都一个句柄(handle)值,对一个页面来说是唯一,是页面的一个标识webdriver进行自动化测试,需要将driver绑定到页面句柄,你的driver只能控制你绑定句柄的这个页面,因此对不不同的窗口页面的元素,driver就不能操作了,下面就看如何解决这种多窗口问题。
实现需求:淘宝首页->聚划算->女装
1、拿到聚划算的句柄,返回的是一个列表
handles = driver.window_handles
2、将句柄绑定给driver,参数是列表中聚划算页面的句柄,x为0表示浏览器中的第一个窗口,1表示第二个窗口,-1表示最后一个窗口。
driver.switch_to_window(handles[x])
#导包、创建浏览器对象、获取淘宝的首页
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.taobao.com")
#等待两秒钟
time.sleep(2)
#获取当前页面的句柄
# CDwindow-AA8085746F56C04363172064996E1A52
handler1 = driver.current_window_handle
print(handler1)
# 2、点击聚划算,进入聚划算页面。
driver.find_element_by_link_text("聚划算").click()
#等待两秒钟
time.sleep(2)
#第一步:获取所有打开窗口的句柄
handlers = driver.window_handles
# ['CDwindow-AA8085746F56C04363172064996E1A52', 'CDwindow-FD84D68BEFF3DBFFB64A5AC48E4F1703']
print(handlers)
#第二步:将聚划算的句柄绑定给driver
driver.switch_to_window(handlers[1])
# 3、选择“女装”,进入女装页面。
driver.find_element_by_link_text("女装").click()
#等待两秒钟
time.sleep(2)
# 4、返回到聚划算页面。
driver.back()
#等待两秒钟
time.sleep(2)
#关闭当前窗口(driver所绑定的哪个窗口)
driver.close()
以上是关于自动化测试第四弹:WebDriver API之浏览器控制方法的主要内容,如果未能解决你的问题,请参考以下文章
python+selenium自动测试之WebDriver的常用API(基础篇一)
UI自动化测试之selenium——selenium中的常用api