一、了解组件
- API:应用程序编程接口。这是一组用来操作WebDriver的“命令”。
- 库:一个代码模块,它包含api和实现这些api所需的代码。库是对应于具体语言的,如java的.jar文件
- 驱动程序:负责控制实际的浏览器。大多数驱动程序是由浏览器厂家自己创建的。驱动程序通常与浏览器一起在系统上运行的可执行模块,而不是在执行测试套件的系统上。(尽管他们可能是同一系统。)
- 框架:用于支持WebDriver套件的附加库。
二、驱动要求,将浏览器(如,chrome)的可执行文件添加到PATH中
官网下载chrome对应版本的可执行文件chromedriver.exe,将该执行文件放入某个文件夹,将该文件夹添加到PATH中。
实例化chrome会话,并添加chromedriver可执行文件的路径;
#coding:utf-8 from selenium.webdriver import Chrome #设置chromedriver可执行文件的路径 driver=Chrome(executable_path="D:Program FilesWebDriver\binchromedriver")
三、操控浏览器
打开导航
driver.get("https://www.baidu.com")
获取当前url
print(driver.current_url)
后退
driver.back()
前进
driver.forward()
刷新
driver.refresh()
获取标题
print(driver.title) #标题
窗口(id)和标签页
driver.current_window_handle
切换窗口或标签页
driver.switch_to.window(窗口id])
创建新窗口(或)新标签页并且切换
关闭窗口或标签页
driver.close()
在会话结束时退出浏览器
当你完成了浏览器会话,你应该调用quit退出,而不是close关闭;
driver.quit()
退出将会
- 关闭所有与WebDriver会话相关的窗口和选项卡
- 结束浏览器进程
- 结束后台驱动进程
- 通知Selenium Grid浏览器不再使用,以便可以由另一个会话使用它(如果您正在使用Selenium Grid)
调用quit()失败将留下额外的后台进程和端口运行在机器上,这可能在以后导致一些问题。
有的测试框架提供了一些方法和注释,您可以在测试结束时放入teardown()方法中。
注意:下面使用的是pytest的teardown(),pytest学习链接
#coding:utf-8 from selenium import webdriver driver=webdriver.Chrome() def test_1(): driver.get("https://www.baidu.com") def teardown(): driver.quit()
您可以考虑使用try finally,这样大多数语言都提供的,这样一个异常处理仍然可以清理WebDriver会话
#coding:utf-8 from selenium import webdriver driver=webdriver.Chrome() try: driver.get("https://www.baidu.com") finally: driver.quit()
python的webdriver现在支持Python上下文管理器,当使用with关键字时,可以在执行结束时自动退出驱动程序。
#coding:utf-8 from selenium import webdriver with webdriver.Chrome() as driver: driver.get("https://www.baidu.com")
Frames and Iframes
使用WebElement
使用name或id
使用索引
离开框架
窗口管理
获取窗口大小
获取浏览器窗口的大小(以像素为单位)
#coding:utf-8 from selenium import webdriver with webdriver.Chrome() as driver: driver.get("https://www.baidu.com") w=driver.get_window_size().get("width") h=driver.get_window_size().get("height") print(w,h)
设置窗口大小
from selenium import webdriver driver=webdriver.Chrome() driver.get("https://www.baidu.com") driver.set_window_size(1920,1080)
得到窗口的位置
获取浏览器窗口左上角的坐标
from selenium import webdriver driver=webdriver.Chrome() driver.get("https://www.baidu.com") x=driver.get_window_position().get('x') y=driver.get_window_position().get('y') print(x,y)
设置窗口位置
将窗口移动到设定的位置
from selenium import webdriver driver=webdriver.Chrome() driver.get("https://www.baidu.com") driver.set_window_position(0,0)
最大化窗口
扩大窗口。对于大多数操作系统,窗口将填满屏幕,而不会阻挡操作系统自己的菜单和工具栏。
from selenium import webdriver driver=webdriver.Chrome() driver.get("https://www.baidu.com") driver.maximize_window()
最小化窗口
最小化当前浏览上下文的窗口。这种命令的精准行为将作用于各个特定的窗口管理器。
最小化窗口通常将窗口隐藏在系统托盘中。
driver.minimize_window()
全屏窗口
填充整个屏幕,类似于在大多数浏览器中按下F11
driver.fullscreen_window()
屏幕截图
用于捕获当前浏览上下文的屏幕截图。WebDriver端点屏幕截图返回以Base64格式编码的屏幕截图
from selenium import webdriver driver=webdriver.Chrome() driver.get("https://www.baidu.com") driver.save_screenshot("E:\0825.png")
元素屏幕截图
用于捕获当前浏览上下文的元素的屏幕截图。WebDriver端点 屏幕截图 返回以Base64格式编码的屏幕截图。