Selenium问题汇总

缘起


现在的项目组用开源的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

参考资源


@篮球宝宝

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Selenium可以用于操作表单(form)元素。根据引用和引用的内容,Selenium提供了一些方法来实现表单操作。这些方法包括元素定位、操作checkbox和radiobutton、处理下拉列表、处理弹框、等待元素出现、鼠标和键盘操作、执行JavaScript脚本、屏幕截图以及定位frame和iframe。你可以通过引入WebDriverWait模块(引用)来使用Selenium的显示等待功能以及其他一些等待条件。这些功能可以帮助你更好地操作和处理表单元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Selenium 核心技术:常用操作汇总](https://blog.csdn.net/qq_31362767/article/details/107739015)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【Selenium核心技术篇】selenium操作form表单操作输入用户名、密码并提交](https://blog.csdn.net/whowhowhoisimportant/article/details/115613686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值