![3b380974019ae6b4605c65798d879a85.gif](https://i-blog.csdnimg.cn/blog_migrate/2bdde798586fc6a37dd16d286156cda3.gif)
我们继续分享自动化测试相关的小tips,
今天的文章告诉小伙伴们 Web 自动化常见的问题该如何去解决。
1 Firefox1. 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 说明
1.selenium 2.x
selenium 2.x 中自动集成了 Firefox 驱动。
因此只须 selenium 版本与 Firefox 浏览器版本对应即可
selenium 版本 | Firefox 浏览器 |
2.25.0 | v 18 |
2.30.0 | v 19 |
2.31.0 | v 20 |
2.42.2 | v 29 |
2.44.0 | v 33 (不支持 31) |
2.52.0 | v 45.0 |
2.53.0 | v 46.0 |
2.53.1 | v 47.0.1 |
2.selenium 3.x
selenium,geckodriver,firefox 对应版本说明:
selenium 版本 | geckodriver 版本 | Firefox 版本 |
3.3 | 0.15 | v 48+ |
3.4 | 0.16 | v 52 |
3.4 | 0.17 | v 52 |
3.4 | 0.18 | v 53 |
3.5 | 0.19 | v 55 |
3.11 | 0.21 | v 57 |
从 selenium 3.0.0 开始就要求 Firefox 为 48 及以上版本
selenium 3.x 使用的 Java 版本为 JDK 1.8
selenium 3.x 使用 geckodriver 作为 Firefox 浏览器的驱动的替代
5.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/
2 InternetExplorer1. 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的ProtectedMode的设置)
DesiredCapabilities capabilities
=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
代码:
DesiredCapabilities
capabilities = new DesiredCapabilities();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
4. IE 浏览器 window 丢失问题
使用 IE 浏览器去完成自动化测试时,代码报了如下错误:
unable to find element with id -- kw
错误总结:
不是因为没有设置等待时间,而是因为之前的 window 对象已经丢失
解决办法:
最快的解决办法是直接指定一个初始化页面
InternetExplorerDriver.INITIAL_BROWSER_URL
代码:
DesiredCapabilities capabilities
=newDesiredCapabilities();capabilities.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "http://www.baidu.com");
3
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.41 | v67-69 |
v2.40 | v66-68 |
v2.39 | v66-68 |
v2.38 | v65-67 |
v2.37 | v64-66 |
v2.36 | v65-67 |
v2.35 | v62-64 |
v2.34 | v61-63 |
v2.33 | v60-62 |
v2.32 | v59-61 |
v2.31 | v58-60 |
v2.30 | v58-60 |
v2.29 | v56-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
4JDK 版本问题使用 3.x 的 selenium 来完成自动化测试时,代码报了如下错误:
Exceptioninthread"main"java.lang.UnsupportedClassVersionError:
错误总结:
3.x 的 selenium 需要 1.8 的 JDK,可能 JDK 版本过低
解决办法:
降级 selenium 版本,或提高 JDK 的版本为 1.8
“有志者立长志,无志者长立志”
这里是软件技术大师专门分享
软件工程师成长方向和各种 tips
面试技巧、职场知识以及其他有趣的内容...
END
![03389a78838216b4be308e3a7c2b2c53.png](https://i-blog.csdnimg.cn/blog_migrate/cdedd339996e7fd10c51a6bb6c3f610b.png)
![e4440b432a9f545346da557e7fc5079e.png](https://i-blog.csdnimg.cn/blog_migrate/76eceeee92facd40cb24c7cccb72b739.png)
![0d7eef9234ec24fbf1cee504c48e140c.png](https://i-blog.csdnimg.cn/blog_migrate/f7f48ebdd1dc2b05f483ba8a3681fc1f.png)