现在的项目组用开源的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. 2013-2014 ACM-ICPC Pacific Northwest Regional Contest B.Bones’s Battery

    题意略. 思路: 这个题目求的是第一个可行解,由此想到用二分试探的方式来解决. 现在讲讲怎么验证该解是否合理: 先用floyd求出两两之间的最短距离. dp[ i ][ j ]表示,i 到 j 至少要 ...

  2. mysql 实战

    建表语句: CREATE TABLE employee ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(150) NOT NULL DEFAULT ...

  3. HDU4578 线段树(区间更新 + 多种操作)和平方,立方

    参考:https://www.cnblogs.com/H-Vking/p/4297973.html 题意: 虽然是比较裸的线段树,但是比较麻烦,并且有很多细节需要考虑,对着别人的ac代码debug了一 ...

  4. UOJ 34 多项式乘法 FFT 模板

    这是一道模板题. 给你两个多项式,请输出乘起来后的多项式. 输入格式 第一行两个整数 nn 和 mm,分别表示两个多项式的次数. 第二行 n+1n+1 个整数,表示第一个多项式的 00 到 nn 次项 ...

  5. poj 1661 Help Jimmy(记忆化搜索)

    题目链接:http://poj.org/problem?id=1661 一道还可以的记忆化搜索题,主要是要想到如何设dp,记忆化搜索是避免递归过程中的重复求值,所以要得到dp必须知道如何递归 由于这是 ...

  6. PAT 天梯杯 L3-008. 喊山 bfs

    L3-008. 喊山 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂 ...

  7. Increasing heap size while building the android source code on Ubuntu 15.10

    http://stackoverflow.com/questions/34940793/increasing-heap-size-while-building-the-android-source-c ...

  8. CVE-2019-0708远程桌面代码执行漏洞复现

    漏洞环境 使用VMware 安装Windows7 SP1模拟受害机 利用 攻击工具准备 1.使用如下命令一键更新安装的metasploit框架 curl https://raw.githubuserc ...

  9. buuctf 随便注 writeup

    1.0 打开页面 显然这个题的考点是注入,那我们来测一下 2.0 sql注入测试 1 2 输入 1' 后发现没有回显,改为 1' --+ 后,有回显,应该在这存在注入点 试一下 1' and 1=1 ...

  10. 【LeetCode】79-单词搜索

    题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中 "相邻" 单元格是那些水平相邻或垂直相邻的单元格.同一 ...