selenium-05-问题2
现在的项目组用开源的Selenium做测试,但不得不说,这个东东bug奇多,下面是我遇到的一些问题,有些提供了解决方法,有些则需要继续研究,希望对各位看官有所帮助。
一、不能从命令行运行Selenium RC
刚开始用命令行运行Selenium RC的时候,看了官网上的运行命令介绍,本来是很简单的东西,但在我机器上就是死活不行。Firefox,IE,Safari都出现404错误,找不到页面。
解决方法:用代理服务器。默认的代理服务器是localhost:4444。但在设置代理的时候,Firefox和IE又是不一样的。IE在“工具”->“Internet选项”->“连接”->“局域网设置”里面设置了就好了。但是Firefox必须用一个参数-firefoxProfileTemplate才可以,因为Selenium RC在启动Firefox的时候,会启动一个初始的Firefox(即跟刚安装的Firefox一样,没有经过任何配置)。关于这个参数的应用,见我的另一篇文章《用Selenium RC从命令行运行Test Suite》。Safari跟IE是一样的,因为Safari代理服务器的设置就是调用IE Internet选项里面的东西。
疑问:在这个问题上,我有一些疑问。官网上虽然提到了代理服务器,但是好像又说Selenium RC在运行的时候默认是使用代理的,也就是说它会自动给那些浏览器配置好代理,但是不知道为什么在IE和Firefox上不起作用。关于默认使用代理,我有两个“证据“,呵呵。一是我后来注意到如果使用Opera的话,是不需要任何设置的,这说明Selenium RC运行的时候应该是为这个浏览器配置了默认代理;二是官网上给出的运行参数中有一个是-avoidProxy,如果不是默认使用代理,这个参数又有什么意义呢!
二、弹出窗口的测试
项目组用到的Selenium测试大部分只是验证页面元素和页面上的链接,所以大部分时间都是用Selenium IDE做简单的脚本录制回放。但是在用IDE做弹出窗口的测试时(我不知道用“弹出窗口”这个术语合不合适,我指的是点击一个链接,这个链接会在新窗口中打开),问题就来了:脚本总是识别不了新窗口那个对象,所以老是在点击链接后选择新窗口这个地方卡住。
解决方法:用Selenium RC运行这个脚本。这个也是我在无意之中解决的。我查了N多资料,发现对弹出窗口的测试这个地方Selenium是有一个bug的,但是有很多文章都提供了解决方案,就是用如下的方式:
"selectWindow" "windowTitle" ""
"windowFocus" "" ""
但是偏偏我运行的时候就是不行。后来无意想到,有一篇文章说的是Selenium Core的运行方式和RC是不同的:Selenium Core是直接运行在浏览器上的,RC是运行在浏览器外的(这两句话,我也不是很理解)。Selenium IDE运行的时候是用Selenium Core的运行方式,也就是说脚本是直接运行在浏览器上的。虽然对这句话不是很理解,但是从字面意思上看,可以这么理解:脚本所在的容器是一个浏览器窗口,所以它只能操作本窗口之内的对象,对于selectWindow这种命令需要操作另外一个窗口,超出了它本身所在的容器的范围,所以它就无能为力了。果然,随着我问题一的解决,这个问题也随之解决了。
三、Safari不能运行
解决了问题一,设置了IE的代理,运行IE是可以,但Safari还是没有办法运行。我是直接用以下这个命令:
java -jar ...Selenium-Server.jar -htmlSuite "*safari" "..." "..." "..."
解决方法:把上面参数中的"safari"改为"safariproxy"或者"custom C:/Program Files/Safari/Safari.exe"。(具体我忘了用哪种方式解决的了,试一下就好了)
关于这个问题,我想多说一点,命令行运行Selenium RC时可以选择的浏览器类型参数(如上面的"safari")是很多的,官网上只给出了很少的一部分(典型的文档更新跟不上软件的更新),下面是完整的列表:
*firefox
*firefoxproxy
*chrome
*iexploreproxy
*pifirefox
*iexplore
*firefox3
*safariproxy
*googlechrome
*konqueror
*firefox2
*safari
*piiexplore
*opera
*iehta
*custom
你可以在运行Selenium
RC那个命令的时候故意把浏览器类型参数输错,这个列表便会显示出来。常用的应该还是官网的那几个,有一些参数尚在实验之中,用了可能会有点问题。对应的每一种浏览器都有几个参数可以用,如果常用的实在不行,用非常用的参数做,也未尝不是一种解决办法。再啰嗦一句,我一直以为这里的参数chrome就是google推出的那个浏览器,但是从上面的列表看,不是这样的。它属于Firefox的一个东西,如果要测试google的chrome浏览器,应该用googlechrome。
四、-timeout不起作用
从命令行运行Selenium
RC的时候-timeout参数貌似不起作用,我还没找到具体的解决办法,不过这个timeout也是可以在脚本里面设置的。
注:以上所用的测试环境
操作系统: WinXP Professional
硬件配置: Intel P4 3.00G; 2G DDR2; 240G
硬盘(一块PATA,80G,XP安装在这个盘上;一块SATA,160G)
浏览器:IE7.0; Firefox2.0; Safari3.2.2; Opera9.63; Chrome1.0
附:参考资源(比较有用的几个资源,直接从我的另一篇文章《用Selenium
RC从命令行运行Test Suite》拷过来的)
1. 令人伤心的官网:
2. 比较有用的Selenese 命令参考:
http://seleniumhq.org/documentation/core/reference.html
3. 集中讲解了如何用interactive的方式从命令行运行Selenium RC:
http://seleniumhq.org/documentation/tutorials/
4. 与Selnium RC有关的文档(从首页上不太好找):
http://seleniumhq.org/documentation/remote-control/
页面上的Options链接就是讲解从命令行运行Selenium RC的几个参数了,比较有用
5. 可以为Selenium RC专门做一个Firefox配置文件,这里有讲解:
http://girliemangalo.wordpress.com/2009/02/05/creating-firefox-profile-for-your-selenium-rc-tests/
selenium-05-问题2的更多相关文章
- [小北De编程手记] : Lesson 05 - Selenium For C# 之 API 下
上一篇,我们介绍了一些Selenium WebDriver相关的API,下面我们就接着上一篇继续介绍Selenium常用的API,这一篇的内容主要涉及到以下话题: Selenium API:复杂事件处 ...
- java selenium启动火狐浏览器报错:Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:14.666Z
Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA Build in ...
- Selenium系列之--05 录制脚本并导出
一.下载Firefox Firefox官方下载地址:http://www.firefox.com.cn/download/#more,下载延长支持版. 二.下载插件 Selenium本身有录制功能组件 ...
- 05 selenium模块
selenium模块 selenium selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作. selenium最初是一个自动化测试工具,而爬虫中使 ...
- Python爬虫学习(10):Selenium的好基友PhantomJS
上一节中我们学习了selenium,用python来操作浏览器,在做网页自动化测试的时候最好不过了 .如果我们来做爬虫用一个带界面的浏览器似乎不太好吧,那可咋办呢?别着急,下来我们要介绍的就是一款不带 ...
- 【python】selenium+python自动化测试环境搭建
参考资料: http://www.cnblogs.com/fnng/archive/2013/05/29/3106515.html http://www.easonhan.info/python/20 ...
- Selenium + PhantomJS + python 简单实现爬虫的功能
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...
- [小北De编程手记] : Selenium For C# 教程目录
写<Selnium For C#>系列文章的初衷是因为有很多朋友问我应该从哪里开始学习自动化测试,于是就为大家写下了这个系列的文章,希望对你有些帮助吧.而我想表达的是Selenium(同时 ...
- [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建
本文想跟大家分享的是Selenium对PageObject模式的支持和自动化测试团队的构建.<Selenium For C#>系列的文章写到这里已经接近尾声了,如果之前的文章你是一篇篇的读 ...
- [小北De编程手记] : Lesson 07 - Selenium For C# 之 窗口处理
在实际的自动化测试过程中,我们会遇见许多需要对窗口进行处理的情况.比如,点击删除某条信息的时候系统会显示一个Alert框.或者点击某个超链接时会在浏览器中打开一个新的页面.这一篇,来和大家分享一下Se ...
随机推荐
- python 07 数据类型
目录 1. 基础数据类型填充 1.str:(不可变) 2. list: 3. tuple: 4. dict: 5. set: 6. bool: 7. 数据类型之间转换 2.删除列表/字典的代码坑: 3 ...
- 在windows7系统下如何查看及升级powershell到3.0版本
最近在学习.net core web api 开发,用到了Mysql.Data.EntityFrameworkCore框架,在根据数据库表生成对应实体类时提示必须先升级本机powershell到3.0 ...
- phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399)
phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399) 一.漏洞描述 PHPCMS 9.6.0版本中的libs/classes/attachment.class.php文件存在漏洞 ...
- vue实现对语言的切换,结合vue-il8n。
1.安装vue-i18n: npm install vue-i18n 如果npm长时间无反应,或安装失败,可以换成淘宝镜像安装: cnpm install vue-i18n 2.在main.js中引用 ...
- SpringDataJpa入门案例及查询详细解析
SpringDataJpaSpring Data JPA 让我们解脱了DA0层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使用Spring Data JPA+ORM(如:h ...
- Codeforce Round #574(Div.2)
...
- Swift从入门到精通第八篇 - 方法 初识
方法(学习笔记) 环境Xcode 11.0 beta4 swift 5.1 方法 结构体.枚举.类都可以定义方法(实例方法.类型方法) 实例方法(Instance Methods) 实例方法只能用实例 ...
- POJ 2488 A Knight's Journey (DFS)
poj-2488 题意:一个人要走遍一个不大于8*8的国际棋盘,他只能走日字,要输出一条字典序最小的路径 题解: (1)题目上说的"The knight can start and end ...
- 【Offer】[58-2] 【左旋转字符串】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"a ...
- 【LeetCode】DFS 总结
DFS(深度优先搜索) 常用来解决可达性的问题. 两个要点: 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点.可以使用递归栈. 标记:和 BFS 一样同样需要对已经遍历过的节点进行 ...