Python + Selenium WebDriver API之浏览器相关操作
01 浏览器窗口大小的控制
关于浏览器的窗口的调整,无非两种,指定的窗口大小和浏览器的最大化状态。使用到的方法分别是set_window_size(x, y)
、maximize_window()
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
time.sleep(1)
browser.maximize_window() # 设置浏览器为最大化状态
time.sleep(1)
browser.set_window_size(800, 600) # 设置浏览器窗口为指定宽高像素值
02 控制浏览器前进、后退
浏览器一般都会给我们提供后退、前进按钮,以方便查看之前的页面,或在回退后再退到当前浏览的页面。
浏览器页面的后退,用到的方法是back()
,前进用的方法是forward()
import time
from selenium import webdriver
browser = webdriver.Chrome()
first_page = 'https://www.126.com/'
print(f'now access {first_page}')
browser.get(first_page)
time.sleep(1)
second_page = 'https://www.12306.cn/'
print(f'now access {second_page}')
browser.get(second_page)
time.sleep(1)
print(f'back to {first_page}')
browser.back() # 执行浏览器页面的后退动作
time.sleep(2)
print(f'forward to {second_page}')
browser.forward() # 执行浏览器页面的前进动作
time.sleep(5)
browser.quit()
03 浏览器刷新
若我们想模拟浏览器页面的刷新(F5),可以直接通过webdriver的refresh()
方法实现。
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
time.sleep(2)
browser.refresh() # 刷新当前页面
04 窗口截图
由于自动化测试用例是由程序执行的,有时候打印的错误信息不够直观。若在脚本执行出错时能够对当前窗口进行截图保存,那么通过截图就可以非常直观地看到脚本出错的原因。WebDriver提供了用于窗口截图的方法save_screenshot()
,可以截取当前窗口。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
# 截取当前窗口,指定截图图片的保存位置
browser.save_screenshot('./baidu_img.png')
这里在保存图片时,后缀名建议使用png
格式。
05 关闭浏览器
关闭浏览器,我们上面已经用到了quit()
方法,其利用就是退出相关的驱动程序和关闭所有窗口。除此之外,WebDriver还提供了close()
方法,用来关闭当前窗口,所以close()
方法通常用于打开了多个窗口的场景中。
在长期执行自动化测试环境中,肯定存在一些因异常导致测试中断的场景,这些场景中不仅浏览器的窗口没有关掉,连其进程都会存留在系统中,一段时间后肯定会堆积大量的无用进程占据资源。
这时,我们就需要手动来清除WebDriver的进程,如下这条命令可以遍历出系统中所有存在ChromeDriver的进程,然后逐一杀除。
taskkill /f /t /im chromedriver.exe