现在的项目组用开源的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. 令人伤心的官网:

http://seleniumhq.org/

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的更多相关文章

  1. [小北De编程手记] : Lesson 05 - Selenium For C# 之 API 下

    上一篇,我们介绍了一些Selenium WebDriver相关的API,下面我们就接着上一篇继续介绍Selenium常用的API,这一篇的内容主要涉及到以下话题: Selenium API:复杂事件处 ...

  2. 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 ...

  3. Selenium系列之--05 录制脚本并导出

    一.下载Firefox Firefox官方下载地址:http://www.firefox.com.cn/download/#more,下载延长支持版. 二.下载插件 Selenium本身有录制功能组件 ...

  4. 05 selenium模块

    selenium模块 selenium selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作. selenium最初是一个自动化测试工具,而爬虫中使 ...

  5. Python爬虫学习(10):Selenium的好基友PhantomJS

    上一节中我们学习了selenium,用python来操作浏览器,在做网页自动化测试的时候最好不过了 .如果我们来做爬虫用一个带界面的浏览器似乎不太好吧,那可咋办呢?别着急,下来我们要介绍的就是一款不带 ...

  6. 【python】selenium+python自动化测试环境搭建

    参考资料: http://www.cnblogs.com/fnng/archive/2013/05/29/3106515.html http://www.easonhan.info/python/20 ...

  7. Selenium + PhantomJS + python 简单实现爬虫的功能

    Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...

  8. [小北De编程手记] : Selenium For C# 教程目录

    写<Selnium For C#>系列文章的初衷是因为有很多朋友问我应该从哪里开始学习自动化测试,于是就为大家写下了这个系列的文章,希望对你有些帮助吧.而我想表达的是Selenium(同时 ...

  9. [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建

    本文想跟大家分享的是Selenium对PageObject模式的支持和自动化测试团队的构建.<Selenium For C#>系列的文章写到这里已经接近尾声了,如果之前的文章你是一篇篇的读 ...

  10. [小北De编程手记] : Lesson 07 - Selenium For C# 之 窗口处理

    在实际的自动化测试过程中,我们会遇见许多需要对窗口进行处理的情况.比如,点击删除某条信息的时候系统会显示一个Alert框.或者点击某个超链接时会在浏览器中打开一个新的页面.这一篇,来和大家分享一下Se ...

随机推荐

  1. Codeforces 1009D

    题意略. 思路: 可知对于一个拥有n个点的图来说,它至少需要有n - 1条边来维持连通性,而且数字1恰好与后面的n - 1个数字互质: 至于n个点的图可以产生合法的互质边的个数的上限,我们可以通过莫比 ...

  2. PHP 仿网易云的评论盖楼

    一.简要 第一次做这种设计,当然有许多不足,希望多多指出. 评论盖楼,就是每条评论一个楼层,而楼层里面可以嵌套很多引用的评论,直接上图 A:牛什么牛(见图 Top4) B回复A:好牛啊.(所以这里就嵌 ...

  3. 【原创】(二)Linux物理内存初始化

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  4. Oracle数据库测试和优化最佳实践: OTest介绍 (转)

    当前Oracle数据库最佳测试工具OTest *  Otest是用于Oracle数据库测试.优化.监控软件. *  Otest是免费提供给Oracle客户和广大DBA工程师使用的软件.由原厂技术专家王 ...

  5. 转载-SpringBoot开发案例之整合日志管理

    转载:https://cloud.tencent.com/developer/article/1097579 有一种力量无人能抵挡,它永不言败生来倔强.有一种理想照亮了迷茫,在那写满荣耀的地方. 00 ...

  6. HZNU Training 1 for Zhejiang Provincial Collegiate Programming Contest

    赛后总结: TJ:今天我先到实验室,开始看题,一眼就看了一道防AK的题目,还居然觉得自己能做wwww.然后金姐和彭彭来了以后,我和他们讲了点题目.然后金姐开始搞dfs,我和彭彭看榜研究F题.想了很久脑 ...

  7. hdu 4614 Vases and Flowers(线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614 题意: 给你N个花瓶,编号是0  到 N - 1 ,初始状态花瓶是空的,每个花瓶最多插一朵花. ...

  8. hdu 1540 Tunnel Warfare(线段树)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1540 题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少. ...

  9. hdu 2895 01背包 Robberies

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  10. (六十五)c#Winform自定义控件-思维导图/组织架构图(工业)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...