`
lsjlym
  • 浏览: 21546 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Selenium用户指南 - 第六章 Selenium 1 (Selenium RC)[4]

 
阅读更多

处理HTTPS和弹出窗口安全

许多应用程序从HTTP切换到HTTPS,当它们需要发送加密的信息诸如密码或信用卡信息。这对今天的Web应用程序来说的是共同的。Selenium RC支持这个。

为确保HTTPS站点的真实,浏览器需要一个安全证书。否则,当浏览器使用HTTPS存取AUT时,它将假定应用程序是不可信任的。当如此时,浏览器将显示一个安全弹出窗口,这些弹出窗口不能使用Selenium RC关闭。

当在Selenium RC测试中处理HTTPS时,必须使用支持的运行模式,并为你处理安全证书。你需要在你的测试程序初始化Selenium时,指定该运行模式。

在Selenium RC 1.0 beta 2以及以后的版本为此运行模式使用*firefox或*iexplore。在早期的版本,包括Selenium RC 1.0 beta 1,使用*chrome或*iehta。使用这些运行模式,你可以不安装任何特定的安全证书;Selenium RC将为你处理这个。

在版本1.0,推荐运行模式*firefox或*iexplore。然而,有附加的*iexploreproxy和*firefoxproxy运行模式。这些仅仅是为了提供向后的兼容性,除非遗留的测试程序需要,不应该使用。它们有安全证书处理,以及多窗口运行,如果你的应用程序打开附加的浏览器窗口,的限制。

在早期的Selenium RC版本,*chrome或*iehta是支持HTTPS和处理安全弹出窗口的运行模式。它们被认为是试验模式,尽管它们相当稳定和许多人使用它们。如果你正在使用Selenium 1.0,你不需要也不应该使用这些旧的运行模式。

安全证书的解释

正常情况下,你的浏览器将信任你正在测试的,安装了你拥有的安装证书的应用程序。你可以在浏览器的选项或Internet属性(如果你不知道你的AUT的安全证书,可询问你的系统管理员)中检查它。当Selenium装载你的浏览器时,它会注入代码到浏览器和服务器之间的截获的消息。浏览器现在认为不信任的软件将试图伪装你的应用程序。它通过使用弹出消息警告你。

要回避这个,Selenium RC(再次重申,使用支持的运行模式)会临时地安装它自己的安全证书,到你的客户机器一个浏览器可以存取的位置。这将欺骗浏览器认为它访问的是一个不同于你的AUT的站点,而有效地抑制警告弹出窗口。

另外一个由早期的Selenium版本使用的方法是安装随你的Selenium安装提供的Cybervillians安全证书。然而,大部分的用户不再需要做这个;如果你正运行Selenium RC在代理注入模式,你可能需要显式地安装这个安全证书。

支持附加的浏览器和浏览器配置

Selenium API支持运行在除了Internet Explorer和Mozilla Firefox的多种浏览器。参见SeleniumHG.org的Web站点,查看支持的浏览器类型。此外,当浏览器不直接被支持时,你仍然可以运行Selenium测试,在你选择的浏览器,通过让你的应用程序启动浏览器使用“*custom”模式(也就是说,替代*firefox或*iexplore)。要使用这个,你在API的调用中,传递浏览器可执行文件的路径。这也可以使用交互模式在服务器中完成。

cmd=getNewBrowserSession&1=*custom c:\Program Files\Mozilla Firefox\MyBrowser.exe&2=http://www.google.com

使用不同的浏览器配置运行测试

正常地,Selenium RC自动配置浏览器,但如果你使用“*custom”模式启动浏览器,你可以强制Selenium RC启动浏览器使用不同的配置,而不是使用自动配置。

例如,你可以像这样使用一个自定义配置启动Firefox:



cmd=getNewBrowserSession&1=*custom c:\Program Files\Mozilla Firefox\firefox.exe&2=http://www.google.com

注意当以这种方式启动浏览器时,你必须手动配置浏览器使用Selenium服务器做为一个代理。正常地,这仅仅意味着打开你的浏览器首选项,并指定“localhost:4444” 作为一个HTTP代理,但此操作方法可能对不同的浏览器,有根本地区别。详细信息可查阅你的浏览器文档。

Mozilla浏览器可能在如何启动和停止上改变。可能需要设置MOZ_NO_REMOTE环境变量使得Mozilla浏览器行为有更多的可预测性。Unix浏览器应该避免使用shell脚本启动浏览器;通常直接使用二进制可执行文件(如firefox-bin)会更好。

解决公共的问题

在开始使用Selenium RC时,有几个常常遇到的潜在的问题。 我们将在此介绍它们以及它们的解决方案。

不能连接到服务器

当你的测试程序不能连接到Selenium服务器时,Selenium在你的测试程序中抛出一个异常。它会显示这个消息或一个类似的一个:


"Unable to connect to remote server (Inner Exception Message:
No connection could be made because the target machine actively
refused it )"

(using .NET and XP Service Pack 2)

如果你看见类似于这样的一个消息,确信你已经启动了Selenium服务器。如果已经启动,那么在Selenium客户库和Selenium服务器之间存在一个连接问题。

当开始使用Selenium RC时,大多数人从在相同的机器上运行测试程序(带有Selenium客户端库)和Selenium服务器开始。要完成这个,使用“localhost”作为你的连接参数。我们推荐以这种方式开始,因为它减少使用初期潜在的网络问题的影响。假定你的操作系统有典型的网络和TCP/IP设置,你应该没有多少困难。事实上,许多人选择以这种方式运行测试。

不管怎样,如果你真的想要运行Selenium服务器在远程机器,应该确保在两个机器间有有效的TCP/IP连接。

如果你难以连接,可以使用常用的网络连接工具,如ping,telnet,ifconfig(Unix)/ipconfig(Windows)等等,确保你有有效的网络连接。如果不熟悉这些,你的系统管理员可以帮助你。

不能装载浏览器

好的,不是一个友好的错误消息,很抱歉,但如果Selenium服务器不能装载浏览器你很可能看到这个错误

(500) Internal Server Error

这可能是由于

- Firefox(Selenium 1.0)不能启动,因为浏览器已经打开和你没有指定一个不同的配置文件。参见在服务器选项的Firefox配置文件一节。

- 你正在使用的运行模式不匹配在你的机器上的任何浏览器。检查传递给Selenium的参数,当你的程序打开浏览器时。

- 你显式地指定了浏览器的路径(使用“*custom” - 见上文),但路径是不正确的。检查和确保路径是正确的。同样查看Selenium用户组确信你的浏览器和“*custom”参数没有已知的问题。

Selenium不能找到AUT

如果你的测试程序成功地启动浏览器,但浏览器不显示你正在测试的Web站点,最大的可能原因是你的测试程序没有使用正确的URL。

这可能容易发生。当你使用Selenium-IDE导出你的脚本,它插入一个虚拟的URL。你必须为你测试的应用程序手动改变这个URL到正确的一个。

当准备一个配置文件时,Firefox拒绝关闭

这时常发生在当你运行Selenium RC测试程序在Firefox时,但你已经有一个Firefox浏览器会话在运行,而你在启动Selenium服务器时没有指定一个不同的配置文件。这个来自测试程序的错误看起来像这样:

Error: java.lang.RuntimeException: Firefox refused shutdown while preparing a profile

此处是来自服务器的完整错误消息:

16:20:03.919 INFO - Preparing Firefox profile...
16:20:27.822 WARN - GET /selenium-server/driver/?cmd=getNewBrowserSession&1=*fir
efox&2=http%3a%2f%2fsage-webapp1.qa.idc.com HTTP/1.1
java.lang.RuntimeException: Firefox refused shutdown while preparing a profile
at org.openqa.selenium.server.browserlaunchers.FirefoxCustomProfileLaunc
her.waitForFullProfileToBeCreated(FirefoxCustomProfileLauncher.java:277)
...
Caused by: org.openqa.selenium.server.browserlaunchers.FirefoxCustomProfileLaunc
her$FileLockRemainedException: Lock file still present! C:\DOCUME~1\jsvec\LOCALS
~1\Temp\customProfileDir203138\parent.lock

要解决这个,参见指定一个不同的Firefox配置文件一节。

版本问题

确信你的Selenium版本支持你的浏览器版本。例如,Selenium RC 0.92不支持Firefox3。有时候你可能是幸运的(我就是)。但不要忘记检查你正在使用的Selenium支持哪个浏览器的版本。如果有疑问,使用最新的,带有你的浏览器版本最广泛支持的Selenium发布版本。

Error message: “(Unsupported major.minor version 49.0)” while starting server

这个错误说你没有使用正确地Java版本。Selenium服务器需要Java 1.5或更高。

加倍仔细地检查你的Java版本,从命令行运行这个。

java -version

你应该看到一个显示Java版本的消息。

java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode)

如果你看到一个较低的版本号,你可能需要更新JRE,或者你可能仅仅需要增加它到你的PATH环境变量。

404 error when running the getNewBrowserSession command


如果当你试图打开一个页面在 “http://www.google.com/selenium-server/“而你得到一个404错误,则一定是因为Selenium服务器没有正确地配置做一个代理。"Selenium服务器"目录没有在google.com上;只有当代理被适当地配置时才会存在。代理配置高度依赖于带有*firefox,*iexplore,*opera,或*custom的浏览器是如何启动的。

- *iexplore:如果浏览器启动是使用*iexplore,你可能有一个Internet Explorer代理设置问题。Selenium服务器试图在Internet选项控制面板配置全局代理设置。你必须确信当Selenium服务器启动浏览器时,它们被正确地配置。试着看看你的Internet选项控制面板。点击“连接(Connections)”选项页,然后点击“局域网设置(LAN Settings)”。如果你需要使用一个代理去存取你想要测试的应用程序,你需要启动Selenium服务器用“-Dhttp.proxyHost”;参见代理配置为了更多的详细信息。

- *custom:当使用*custom时,你必须正确地配置代理(手动),否则你会得到一个404错误。加倍检查你的正确配置的代理设置。为了检查是否正确地配置了代理,可以试试故意地错误配置浏览器。试试配置浏览器使用错误的代理服务器宿主或错误的端口。如果你已经成功地错误配置浏览器的代理设置,那么浏览器将不能够连接到Internet,这是一个确信一个人正在正确地调整相关设置的方式 。

- 对其他的浏览器(*firefox,*opera) ,我们自动为你硬编码代理,如此此功能没有已知的问题。如果你遇到404错误,并且已经仔细地遵从用户指南,可以张贴你的结果给Selenium用户组,从用户社区寻求某些帮助。

许可拒绝错误

该错误最常见的原因是你的会话正试图,通过跨域的边界(诸如存取一个页面从http://domain1,然后存取一个页面从http://domain2)或切换协议(从http://domainX移动到https://domainX)违反同源策略。

这个错误也可能发生,当JavScript试图去查找UI对象,那个仍然是不可得到的(先于这个页面已经完成装载),或者不再是可得到的(在页面已经开始卸载)。这最常遇到是在带有几个部分的AJAX页面,或者装载和/或重新装载独立的较大页面的子帧。

错误可能是间歇的。经常不可能用调试器再生这种问题,因为当调试器的负荷增加到系统后,源于竞争条件的问题原因是不可再生的。许可问题被包括在本教程中。请仔细地阅读有关同源策略,代理注入的章节。

处理浏览器弹出窗口

有几种在Selenium测试中得到的“弹出窗口”。你可能不能运行Selenium命令关闭这些弹出窗口,如果它们是由浏览器激发而不是你的AUT。你可能需要知道如何管理它们。每一种类型的弹出窗口有区别地标定。

- HTTP基本验证对话框:这些对话框用于提示登录到站点的用户/密码。要登录到需要HTTP基本验证的站点,在URL中使用用户/口令,正如在RFC1738中的描述,像这样: open(“http://myusername:myuserpassword@myexample.com/blah/blah/blah“).

- SSL证书警告:Selenium RC自动试图去伪装SSL证书,当服务器使能做一个代理时;参见HTTPS一节为了更多的信息。如果你的浏览器被正确地配置,你应该永远也不会看到SSL证书警告,但你可能需要配置浏览器信任我们危险的“CyberVillains” SSL证书授权。再次重申,有关如何完成请参考HTTPS一节。

- 模态的JavaScript的alert/confirmation/prompt对话框:Selenium试图隐藏这些对话框(通过替代window.alert,window.confirm和window.prompt),因此它们不会停止你的页面的执行。如果你看到一个alert弹出窗口,可能是因为它是在页面装载过程中激发的,那个通常对我们来说太早,以至于不能保护这个页面。Selenium包含用于断言和验证alert和confirmation弹出窗口的命令。参见在第四章中的有关这些主题的章节。

在Linux,为什么我的FIrefox浏览器会话没有关闭?

在Unix/Linux,你必须直接调用“firefox-bin”,如此确信可执行文件在指定的路径上。如果通过一个shell脚本执行Firefox,当杀死浏览器Selenium RC时,也将杀死shell脚本,留下浏览器继续运行。你可以直接指定firefox-bin的路径,像这样。

cmd=getNewBrowserSession&1=*firefox /usr/local/firefox/firefox-bin&2=http://www.google.com

Firefox *chrome使用自定义的配置文件不工作

检查Firefox配置文件文件夹 -> prefs.js -> user_pref(“browser.startup.page”, 0);注释此行像这样: “//user_pref(“browser.startup.page”, 0);” 然后重试。

当正在装载父页面时,装载一个自定义的弹出窗口可以么(例如,先于父页的JavaScript window.onload() 函数运行)?

不可以。Selenium在装载页面时,依赖于解释器去决定窗口名称。这些解释器在捕捉新窗口时工作最佳,如果这些窗口被装载在onload()函数之后。Selenium不可能识别在onload()函数之前装载的窗口。

验证命令的问题

如果你从Selenium-IDE导出你的测试,你可能发现你从测试得到空的验证字符串(依赖于你使用的编程语言)。

注释:本节还没有开发。

Safari和MultiWindow模式

注释:本节还没有开发。

Firefox在Linux

在Unix/Linux,1.0以前的Selenium版本需要直接调用“firefox-bin” ,如果你正在使用一个以前的版本,确信真实的可执行文件在指定的路径上。

在大多数的Linux发布中,实际的firefox-bin位于:

/usr/lib/firefox-x.x.x/

其中x.x.x是程序的版本号。如此要增加路径到用户搜索路径,你必须增加下面的到你的.bashrc文件:


export PATH="$PATH:/usr/lib/firefox-x.x.x/"

如果需要,你可以直接指定firefox-bin的路径到你的测试中,像这样:

"*firefox /usr/lib/firefox-x.x.x/firefox-bin"

IE和样式属性

如果你正运行测试在Internet Explorer,你不能定位元素使用样式属性。例如:

//td[@style="background-color:yellow"]

在Firefox,Opera或Safari,这会工作完美的,但在IE不行。IE按大写字母解释在@style中的关键字。因此,即使源代码是小写,你也应该使用:

//td[@style="BACKGROUND-COLOR:yellow"]

如果你的测试打算工作在多个浏览器中,这是一个问题,但你可以容易地编码你的测试去检测这种情况,并试图替代这个仅工作在IE的定位器。

Error encountered - “Cannot convert object to primitive value” with shut down of *googlechrome browser

要避免这个错误,你必须启动浏览器带有一个无效同源策略检查的选项。

selenium.start("commandLineFlags=--disable-web-security");

在那里我可以询问在这里没有回答的问题的?

试一下我们的用户组。


© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.

分享到:
评论

相关推荐

    快速启动selenium-RC-server

    快速启动selenium-RC-server

    ruby selenium-client-1.2.18.gem

    1. Download the latest version of Selenium RC 2. Unzip the file save it C:\selenium-remote-control-1.0.3 3. command prompt>java -version –> Version should grater than 1.6.0_5 4. command prompt go to ...

    selenium-server-standalone-2.25.0.jar

    (1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。 为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium ...

    selenium-server-standalone-3.8.1和selenium-java-3.7.1

    selenium rc。Selenium Server服务器jar包,java客户端驱动。

    selenium-RC.rar

    selenium-RC.rar,包含selenium-java-client-driver.jar,selenium-server.jar等

    selenium-server-standalone-2.45.0

    文件为selenium-server-standalone-2.45.0.jar包,兼容最新Firefox浏览器,实现selenium+eclipse+Firefox自动化

    selenium RC入门实例

    昨天群里有朋友问我selenium入门例子,我今天抽了点时间写了一段简单的代码,此代码适合刚刚学习selenium的人员参考,此代码是selenium2 RC 调用chrome driver访问百度,输入Jack_test 搜索. 代码里面含资源包:selenium...

    selenium-java-2.53.1.rar

    WebDriver旨在提供一个更简单更简洁的编程接口以及解决一些Selenium-RC API的限制。Selenium-Webdriver更好的支持页面本身不重新加载而页面的元素改变的动态网页。WebDriver的目标是提供一个良好设计的面向对象的...

    selenium-rc

    selenium1.0的自动化测试,selenium-remote-control-1.0.3,包含selenium-java-client-driver-1.0.1、selenium-php-client-driver-1.0.1等等

    selenium-server-2.9

    selenium web是一种自动化测试工具,有三部分组成selenium-ide;selenium-rc;selenium-grid。这里只是selenium-rc。

    selenium-java-2.25.0.zip

    In order to create scripts that interact with the Selenium Server (Selenium RC, Selenium Remote Webdriver) or create local Selenium WebDriver script you need to make use of language-specific client ...

    Selenium rc+selenium_java

    selenium-java-2.42.2.jar selenium-server-standalone-2.42.2.jar

    selenium-html-runner-3.141.59.jar

    Selenium 3.x不再能够直接运行SeleniumRC,而是通过仿真和WebDriverBackedSelenium接口来实现它。下载版本3.141.59以运行从遗留IDE导出的Selenium测试,使用SeleniumHTMLRunner。要在网格配置中使用SeleniumServer,...

    selenium-RC

    selenium-RC

    selenium rc使用指南

    selenium selenium rc 自动化测试

    Selenium私房菜(新手入门教程)1

    6.Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1) 7.Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2) 8.Selenium私房菜系列8 -- 玩转Selenium Server 9.Selenium私房菜系列9 -- Selenium RC服务器...

    seleniumRC

    seleniumRC有需要的可以看看,感觉这玩意官网不太好下载

    Selenium-RC

    Selenium[1] 也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与...

    selenium RC与selenium webdriver的区别

    selenium RC与selenium webdriver的区别

    selenium-leg-rc-2.47.1.jar

    java运行依赖jar包

Global site tag (gtag.js) - Google Analytics