一文搞定所有 web 自动化常见问题
Firefox
1. Firefox路径问题
firefox火狐浏览器去完成自动化测试时,代码报了如下错误:
Cannot find firefox binary in PATH. mark sure firefox is installed
错误原因:
firefox安装在其它路径,不是默认的安装路径
解决办法:
指定firefox可执行文件路径:webdriver.firefox.bin
代码设置:
System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
2. selenium 3.x Firefox驱动问题
使用selenium3.x+firefox火狐浏览器去完成自动化测试时,代码报了如下错误:
The path to the driver executable must be set by the webdriver.gecko.driver system properity
错误原因:
缺少火狐浏览器驱动包。如果selenium版本是3.x的,需要使用驱动包
解决办法:
往项目中添加火狐驱动包,并加载驱动的配置。至于该驱动版本适配的浏览器和selenium版本在驱动的change log里有说明(如:使用selenium 3.5.1+firefox 56)
代码设置:
System.setProperty("webdriver.gecko.driver","src/test/resources/geckodriver.exe");
3. selenium与驱动版本匹配问题
使用selenium2.x版本+firefox去完成自动化测试时,代码报了如下错误:
Unable to connect to host 127.0.0.1 on port 7055 after 45000ms
错误总结:
firefox浏览器版本和selenium版本不适配。
解决办法:
建议降级火狐版本到47以下(比如:selenium 2.53.0+firefox 46)
4.selenium for firefox说明
selenium 2.x
selenium 2.x中自动集成了firefox驱动。
因此只须selenium 版本与firefox浏览器版本对应即可
selenium版本Firefox浏览器
2.25.0v 18
2.30.0v 19
2.31.0v 20
2.42.2v 29
2.44.0v 33 (不支持31)
2.52.0v 45.0
2.53.0v 46.0
2.53.1v 47.0.1
selenium 3.x
selenium,geckodriver,firefox 对应版本说明:
selenium版本geckodriver版本Firefox版本
3.30.15v 48+
3.40.16v 52
3.40.17v 52
3.40.18v 53
3.50.19v 55
3.110.21v 57
从selenium 3.0.0开始就要求firefox为48及以上版本
selenium 3.x使用的java版本为jdk 1.8
selenium 3.x使用geckodriver作为firefox浏览器的驱动的替代
4、Firefox自动化相关工具链接
Change log https://raw.githubusercontent.com/SeleniumHQ/selenium/master/java/CHANGELOG
Firefox驱动https://github.com/mozilla/geckodriver/releases/
Firefox各版本 http://ftp.mozilla.org/pub/firefox/releases/
Firefox驱动 镜像 https://npm.taobao.org/mirrors/geckodriver/
InternetExplorer
1. IE浏览器驱动问题
使用IE浏览器去完成自动化测试时,代码报了如下错误:
The path to the driver executable must be set by the webdriver.ie.driver system property
错误总结:
缺少IE浏览器驱动包
解决办法:
往项目中添加IE驱动包,并加载驱动的配置。
System.setProperty("webdriver.ie.driver","src/test/resources/IEDriverServer.exe");
下载地址 http://www.seleniumhq.org/download/
建议下载版本:3.7.0 http://selenium-release.storage.googleapis.com/index.html?path=3.7/
IE驱动版本与Selenium版本保持相同即可 http://selenium-release.storage.googleapis.com/index.html
2. IE浏览器保护模式问题
使用IE浏览器去完成自动化测试时,代码报了如下错误:
Protected Mode Settings are not the same for all zones
解决方法1:
浏览器设置(但是换一台电脑就不适用了) 打开IE浏览器->工具->安全->全部勾选启用保护模式
解决方法2:
忽略浏览器保护模式的设置InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS 代码:
//取消IE安全设置(忽略IE的Protected Mode的设置)DesiredCapabilitiescapabilities=newDesiredCapabilities();capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
3. IE浏览器缩放设置
使用IE浏览器去完成自动化测试时,代码报了如下错误:
Browser zoom level was set to 125%.It should be set to 100%
错误总结:
浏览器缩放级别设置不对导致的(点工具栏页面->缩放设置)
解决办法:
忽略此设置:InternetExplorerDriver.IGNORE_ZOOM_SETTING 代码:
DesiredCapabilitiescapabilities=newDesiredCapabilities();capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING,true);
4. IE浏览器window丢失问题
使用IE浏览器去完成自动化测试时,代码报了如下错误:
unable to find element with id -- kw
错误总结:
不是因为没有设置等待时间,而是因为之前的window对象已经丢失
解决办法:
最快的解决办法是直接指定一个初始化页面 InternetExplorerDriver.INITIAL_BROWSER_URL 代码:
DesiredCapabilitiescapabilities=newDesiredCapabilities();capabilities.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL,"http://www.baidu.com");
Chrome
1. chrome浏览器驱动路径
使用Chrome做测试时,报了如下错误:
The path to the driver executable must be set by the webdirver.chrome.driver system properity
解决方案:
系统设置Chrome驱动文件的路径
System.setProperty("webdriver.chrome.driver","xxx");
2. chrome浏览器与chromeDriver匹配问题
使用chrome浏览器去完成自动化测试时,chrome浏览器停止运行
chromedriver.exe 已停止工作
错误总结:
chrome浏览器版本过高,虽然根据官网上的信息,2.33的chrome驱动支持60-62的谷歌。但是60根本不行
解决办法:
降级chrome
3.Chrome与ChromeDriver版本对照表
ChromeDriver 版本支持的 Chrome 版本
v2.41v67-69
v2.40v66-68
v2.39v66-68
v2.38v65-67
v2.37v64-66
v2.36v65-67
v2.35v62-64
v2.34v61-63
v2.33v60-62
v2.32v59-61
v2.31v58-60
v2.30v58-60
v2.29v56-58
chrome浏览器各版本 http://www.chromedownloads.net/chrome64win/
禁止谷歌浏览器更新 https://jingyan.baidu.com/article/76a7e409f2137afc3b6e15be.html
ChromeDriver 镜像 http://npm.taobao.org/mirrors/chromedriver
Selenium 镜像 http://npm.taobao.org/mirrors/selenium
JDK版本问题
使用3.x的selenium来完成自动化测试时,代码报了如下错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError:
错误总结:
3.x的selenium需要1.8的jdk,可能jdk版本过低
解决办法:
降级selenium版本,或提高jdk的版本为1.8