1、什么样的项目适合做自动化测试
·软件需求变动不频繁
·项目周期长
·自动化测试脚本可以重复使用
2、Selenium
·用于web应用程序测试的工具
·直接运行在浏览器,模拟用户操作
·覆盖windouws、Linux和Mac
·覆盖IE、Chrome、FireFox等主流浏览器
·java、python语言进行脚本编写
·官网下载
·https://docs.seleniumhq.org/download/
·版本:
·https://selenium-release.storage.googleapis.com/index.html
·步骤:
打开官网:点击downloads
·在图片中点击红色部分查看以前的版本
这里可以选择很多的selenium版本,本教程选用的是2的最后一个版本,因为此版本比较稳定:2.53
点击进去:
在上图中,可以选择2.53.0或者2.53.1还有IE浏览器的驱动包
在downloads页面,往下拉,可以看到Third Party Drivers,这里可以下载浏览器的驱动,如chrome、firefox
3、自动化程序
为了以后项目的方便移植,我们把项目所需要的驱动文件放在项目目录下,也就是copy浏览器驱动文件到项目下
1、ie浏览器
错误1:Exception in thread "main" java.lang.IllegalStateException:
the path to the driver executable
must be set by the webdriver.ie.driver system property;
IE驱动默认安装在C盘,如果不是默认安装在C盘,就需要引入ie驱动,首先将ie驱动copy放到项目下,然后添加代码:
System.setProperty(SystemProperty.BROWSER_BINARY,"src/test/resources/IEDriverServer");
//System.setProperty("webdriver.ie.driver","src/test/resources/IEDriverServer");
要注意的是:可执行的驱动的路径要从src开始。
错误2:Protected Mode settings are not same for all zones.
Enable Protected Mode must be set to the same value
解决方案1:设置各个区域的安全设置相同
错误3:Browser zoom level was set to 150%,It should be set to 100%
页面缩放现在是150%,需要设置成100%
上面错误2和错误3是因为本地的浏览器设置不合理导致的,但是把程序发给同事,另外的主机-》还是会报错--〉所以不具备通用性--》通过通用性的设置来完成
//创建Capabilities的子类对象
DesiredCapabilities capabilities = new DesiredCapabilities();
//设置Capabilities的子类对象所具有的能力:
//忽略安全域的设置
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
//忽略缩放级别
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty(SystemProperty.BROWSER_BINARY,"src/test/resources/IEDriverServer"");
//通过设置的Capabilities子类对象去初始化iedriver
return new InternetExplorerDriver(capabilities);
2、chrome浏览器
chrome浏览器比较容易操作,并且在实际测试中使用比较方便。
private static WebDriver getChromeDriver() {
//设置chrome浏览器驱动(其驱动文件已copy到项目sources文件夹下),注意路径从src开始,不要加上项目名
System.setProperty("webdriver.chrome.driver","src/test/resources/chromedriver" );
return new ChromeDriver();
}
3、对于firefox浏览器
1、路径出错:
(1)windows下
error:cannot find firefox binary in PATH
这是因为没有firefox没有使用默认安装
两个解决方法:
1、firefox使用默认安装,系统会自动配置一个path
2、在程序开始时就指定属性--》SystemProperty.BROWSER_BINARY
System.setProperty(SystemProperty.BROWSER_BINARY, "");//里面填写win下的firefox.exe的路径
(2)mac下
1、firefox默认安装路径:/Applications/Firefox.app/Contents/MacOS/firefox-bin
2、如果不是安装在上面路径,则在程序中指定可执行文件的路径:
System.setProperty(SystemProperty.BROWSER_BINARY, "/Applications/Firefox.app/Contents/MacOS/firefox-bin");
//里面填写Mac下的firefox-bin的路径
这里要注意的是,当selenium是2.xxx的版本时,Firefox使用47以下版本,不需要可执行文件(浏览器驱动),这些实现完全放到FirefoxDriver中去实现了--》2.53.1selenium+firefox46.0
而selenium是3.xxx的版本时,程序中要指定可执行文件(浏览器驱动)
干货:
chrome浏览器各版本:60.0
http://www.chromedownloads.net/chrome64win/
火狐各版本 :46.0
http://ftp.mozilla.org/pub/firefox/releases/
selenium官网下载:
https://docs.seleniumhq.org/download/