一文搞定所有 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.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 |
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浏览器的驱动的替代
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的设置)
DesiredCapabilities capabilities = new DesiredCapabilities();
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 = new DesiredCapabilities();
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.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
JDK版本问题
使用3.x的selenium来完成自动化测试时,代码报了如下错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError:
错误总结:
3.x的selenium需要1.8的jdk,可能jdk版本过低
解决办法:
降级selenium版本,或提高jdk的版本为1.8
一文搞定所有 web 自动化常见问题的更多相关文章
- 一文搞定 SonarQube 接入 C#(.NET) 代码质量分析
1. 前言 C#语言接入Sonar代码静态扫描相较于Java.Python来说,相对麻烦一些.Sonar检测C#代码时需要预先编译,而且C#代码必须用MSbuid进行编译,如果需要使用SonarQub ...
- 一文搞定MySQL的事务和隔离级别
一.事务简介 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成. 一个数据库事务通常包含了一个序列的对数据库的读/写操作.它的存在包含有以下两个目的: 为数据库操作序列提供 ...
- 10行代码搞定移动web端自定义tap事件
发发牢骚 移动web端里摸爬滚打这么久踩了不少坑,有一定移动web端经验的同学一定被click困扰过.我也不列外.一路走来被虐的不行,fastclick.touchend.iscroll什么的都用过, ...
- 一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)
本文介绍Spring Boot.Vue .Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库.按照本文进行项目部署,不迷路. 1. 前言 典型的软件开发,经过" ...
- 一文搞定scrapy爬取众多知名技术博客文章保存到本地数据库,包含:cnblog、csdn、51cto、itpub、jobbole、oschina等
本文旨在通过爬取一系列博客网站技术文章的实践,介绍一下scrapy这个python语言中强大的整站爬虫框架的使用.各位童鞋可不要用来干坏事哦,这些技术博客平台也是为了让我们大家更方便的交流.学习.提高 ...
- 21.SpringCloud实战项目-后台题目类型功能(网关、跨域、路由问题一文搞定)
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
- 一文搞定FastDFS分布式文件系统配置与部署
Ubuntu下FastDFS分布式文件系统配置与部署 白宁超 2017年4月15日09:11:52 摘要: FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储.文件同步.文件访问(文件 ...
- 一文搞定Flask
Flask 一 .Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收h ...
- 一文搞定 Git 相关概念和常用指令
我几乎每天都使用 Git,但仍然无法记住很多命令. 通常,只需要记住下图中的 6 个命令就足以供日常使用.但是,为了确保使用地很顺滑,其实你应该记住 60 到 100 个命令. Git 相关术语 Gi ...
随机推荐
- ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务40:介绍 1.Individual authentication 模板 ...
- java都是值传递,没有引用传递
博主这几天在复习 javaSE 部分的内容时,遇到了关于参数传值的问题,但是始终不知道原因,上网上一查才知道钻牛角尖了,把C语言的参数传值转移到java中了. 相信很多在学习java之前,有接触过C/ ...
- iOS开发之--为UITextField监听数值变化的三种方法
项目中有个验证码输入直接验证跳转页面,用的RAC来监听textfield的输入值,如下: @weakify(self); [self.codeView.textField.rac_textSignal ...
- 【原】通过Spring结合Cglib处理非接口代理
前言: 之前做的一个项目,虽然是查询ES,但内部有大量的逻辑计算,非常耗时,而且经常收到JVM峰值告警邮件.分析了一下基础数据每天凌晨更新一次,但查询和计算其实在第一次之后就可以写入缓存,这样后面直接 ...
- Android源码分析(六)-----蓝牙Bluetooth源码目录分析
一 :Bluetooth 的设置应用 packages\apps\Settings\src\com\android\settings\bluetooth* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等 ...
- Visual Studio Code 远程开发探秘
摘要: IDE新时代! 作者:SHUHARI 的博客 原文:Visual Studio Code 远程开发探秘 Fundebug按照原文要求转载,版权归原作者所有. 在以前的文章 有趣的项目 - 在浏 ...
- jQuery中$符号的作用
jQuery中$符号的作用 1.查找作为jQuery包装器,利用选择器来选择DOM元素(这个也是最强大的功能) 例如:$("table tr:nth-child(even)") 基 ...
- Nginx01(Nginx简介)
一:序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. 二:Nginx常用功能 1.Http代理 ...
- 201871010128-杨丽霞《面向对象程序设计(java)》第十六周学习总结
201871010128-杨丽霞<面向对象程序设计(java)>第十六周学习总结(1分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-dai ...
- 【Spring IoC】Spring Bean(三)
一.Spring Bean的定义 被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的.bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象. ...