python3+selenium环境搭建
Webdriver概述
Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Webdriver 的API更容易理解和使用,其可读性和可维护性也大大提高。Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动,不需要启动其他进程或安装其他程序,也不必像Selenium 1那样需要先启动服务。
支持浏览器
Firefox (FirefoxDriver)
IE(InternetExplorerDriver)
Opera(OperaDriver)
Chrome (ChromeDriver)
safari(SafariDriver)
支持语言
Java
C#
PHP
Python
Perl
Ruby
安装,卸载、查看
安装:pip install selenium==XXXX (指定版本号,不指定的话,就安装最新的版本)
卸载 pip uninstall selenium
查看版本号:pip show selenium
多浏览器运行
启动Firefox
1.FireFox 48以上版本:Selenium 3.X +FireFox驱动——geckodriver注意对应版本号
注意对应版本的浏览器驱动应放在python和浏览器的安装目录内,否则会报错,找不到相关path的驱动路径
2.Firefox 48 以下版本:Selenium2.X 内置驱动
驱动下载地址https://github.com/mozilla/geckodriver/releases
firefox版本下载: http://ftp.mozilla.org/pub/firefox/releases/ht
网上百度相关浏览器及对应selenium及驱动的版本:
(1)firefox 63+selenium 3.11.0+geckodriver 0.23.0
(2)firefox 46+selenium 2.53.6+geckodriver 0.20.0
(3)firefox 47+selenium 3.13.0+geckodriver 0.15.0
(4)firefox57+selenium3.5.0+geckodriver0.19.1
(5)Firefox60.0.1+selenium3.14.1+geckodriverv0.26.0
(6)Firefox66+selenium3.14.1+geckodriverv0.24.0
(7)Firefox54+selenium3.4.3+geckodriverv0.17.0
启动IE浏览器
IE 9以上版本
Selenium3.X +IE驱动
IE 9以下版本
Selenium 2.X +IE驱动
启动Chrome浏览器
selenium2.x/3.x +Chrome驱动
ChromeDriver的安装
下载地址:http://chromedriver.storage.googleapis.com/index.html
如果下载后,使用的过程中出现问题,可以检查一下是否因为driver的版本和浏览器不兼容,有一个对应关系:
注意!
各个驱动下载地址: http://www.seleniumhq.org/download/
浏览器位数的版本和驱动版本要一致! 如果是32bit浏览器而Driver是64bit则会导致脚本运行失败!
第一个自动化测试脚本
案例:
启动火狐浏览器,
首先打开我要自学网页面,打印网页标题,等待3秒
打开百度首页,打印网页标题,再等待2秒
关闭浏览器。
from selenium import webdriver
from time import sleep
#加载浏览器驱动
driver=webdriver.Firefox()
#打开网页
driver.get("http:www.baidu.com")
print(driver.title)
sleep(3)
#打开百度首页
driver.get("http://www.baidu.com")
print(driver.title)
sleep(3)
#关闭浏览器
driver.quit()
浏览器操作
浏览器窗口大小设置
页面前进后退
页面刷新
from selenium import webdriver
from time import sleep
driver=webdriver.Firefox()
driver.get("http://www.xxxxxxxxxx")
driver.maximize_window()
sleep(2)
driver.get("http://www.xxxxxxxxxx")
driver.set_window_size(400,800)
driver.refresh()
sleep(2)
driver.back()
sleep(2)
driver.forward()
sleep(2)
driver.quit()