现在的项目组用开源的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. Demo小细节-2

    今天在牛客的题海中再次找虐,题目如下: public class B { public static B t1 = new B(); public static B t2 = new B(); { S ...

  2. Egret白鹭开发微信小游戏排行榜功能

    推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 最近事情特别多,今天终于实现了排行榜功能,记录下来大家一起学习学习. 一.调用默认排行榜 首先我们需要了解: 1.白鹭开 ...

  3. Codeforces 985D

    题意略. 思路:这个题本来打算先推一下公式,然后解方程来算.函数图像大概如下: 最左端为H.但是由于中间那个尖的地方(假设它的高度为h),可能在那个地方有多堆沙包,所以推公式貌似不行. 但是最高高度h ...

  4. UVA1486 Transportation 费用流 拆边。

    #include <iostream> #include <cstdio> #include <cmath> #include <queue> #inc ...

  5. 2019 HZNU Winter Training Day 13 Comprehensive Training

    A.Jongmah   CodeForces-1110D 题意:你在玩一个数字游戏,有一堆写在瓦片上的数字,希望你能组成最多的三元组(三个数字相同,或顺子). 这题用到的方法是动态规划.f[i][j] ...

  6. codeforces 814 C. An impassioned circulation of affection(二分+思维)

    题目链接:http://codeforces.com/contest/814/problem/C 题意:给出一串字符串然后q个询问,问替换掉将m个字符替换为字符c,能得到的最长的连续的字符c是多长 题 ...

  7. The Suspects POJ1611

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 36417   Accepted: 17681 De ...

  8. Elasticsearch之联想词示例

    public class LianXiangWord { private static RestClient client; static { client=RestClient.builder(ne ...

  9. spring boot日志logback输出

    logback是spring boot的官方推荐日志. 1.在代码中使用logback日志: import org.slf4j.Logger; import org.slf4j.LoggerFacto ...

  10. eclipse中离线安装activit插件

    离线安装activiti教程: 1.先下载压缩包和jar包 链接:https://pan.baidu.com/s/1hSToZt_4A262rUxc8KToCw 密码:j5r1 2.将下载好的jars ...