Selenium Remote Control: Troubleshooting FAQ
是否遇到问题? 也许之前我们已经听到过这个。如果没有,就试试 用户论坛
。
在教程中,当执行getNewBrowserSession命令的时候返回了一个404错误!
先阅读完教程,确保你已经仔细阅读了"Same Origin Policy"这一节。
当试图打开http://www.google.com/selenium-server/
这个页面的时候,如果返回404错误,那么这一定是因为Selenium服务器没有被正确配置一个代理,要知道这个目录在google.com上并不是实际存在的,只有在代理被正确配置之后,它才可能看起来是存在的。
那么现在要问的问题就是:为什么代理没有被正确配置呢?这可能有很多原因,要看你是以何种方式去加载浏览器:*firefox, *iexplore, *opera 或者 *custom。
- *iexplore*:*如果你使用*iexplore加载浏览器,这可能会有几种可能性。
Selenium服务器试图在控制面板的Internet选项中配置全局代理设置;我们需要确保当Selenium服务器启动浏览器的时候这些被正确配置。检查一下你的控制面板里Internet选项,单击"链接"面板,然后点击"局域网设置"。
-
- 如果你已经选中"自动设置",(第一个选项框)在使用Selenium RC前,你需要去掉这个选项。这已经被记录在BugSRC-22
中。
如果你需要使用代理去访问你想测试的应用,启动Selenium服务器的时候需要加入"-Dhttp.proxyHost"参数;想获取更详细的信息,参见"命令行选项"。
- 同样要注意, 正如控制面板里所描述的,"这些设置将不会被应用于 拨号或者VPN连接"。 如果你是在使用拨号或者VPN连接,Selenium RC 无法自动配置IE代理... 实际上,据我们所知,根本没有一个标准的方法配置你的代理,即使是手动配置。 (这被记录在bug SRC-21
, 但是这可能不会被修复。) 作为一个工作区, 你也许能够使用experimental *iehta browser launcher 作为替代。
作为最后一个方法, 你也许可以试着去手动配置代理,并且使用 [*custom]加载浏览器,或者参见 experimental *iehta browser launcher.
- *custom: 当使用*custom的时候, 将由你决定如何去正确的配置代理(手动)。 如果你忘记了,或者没有正确配置,将会返回一个 404 错误。再次检查一下你是否正确配置了代理。注意在一些浏览器里是非常容易发生错误,当你确定配置了代理,但是却没有任何效果的时候,修改错误的设置。一个区分你是否已经正确配置代理了的办法是试着故意将浏览器配置错误。尝试给浏览器配置错误的代理服务器主机或者端口号。如果你成功将浏览器的代理配置错误,你的浏览器将无法连接到因特网,这将可以确定你调整了一些相关的设置。
例如,你可以尝试将浏览器的代理服务器主机名配置成"asdflkjdasf",端口设成"1234"。然后试着打开google.com,并且检索点什么东西。如果可以成功的连接到Google并可以检索的话,说明你一定没有修改掉你的代理配置\!当使用正确的设置时(localhost 4444端口),你也许会尝试关掉Selenium Server。如果禁掉代理,你也不能够连接到Google。如果看起来可以的话,那么你就可以知道你一定犯了什么错误。
要知道的是这个问题在IE上确实可能成为一个难题,因为IE有时候会忽视任何配置的代理设置,即使是手工的\!(这一般发生在使用拨号连接因特网,或者使用VPN时。)那样,你将根本无法配置代理。作为替代,你可以使用试验的*iehta 浏览器加载器
- SSL/HTTPS: 当你开始访问HTTPS的URL时候, 我们会尝试使用我们的代理来截取这些加密了的指令。参见[HTTPS in the tutorial]。 这也许会使你的浏览器弹出对话框警告也许有人在截留你的安全传输; 那种情况下,这确实是发生的。我们的代理在伪造SSL加密,并且使你的浏览器接受它们。(我们希望将来能够自动配置浏览器不弹出这些警告信息。) 同时, 如果我们内嵌的SSL支持并不工作,你需要使用我们提供的某一种 试验性的浏览器加载器 去测试这些站点是否要求SSL加密。
- 其他(*firefox, *opera): 对于这些其他的, 我们已经为你自动将代理设定了, 对于这个功能我们也不知道有发现问题。 如果在这个教程中当使用这些浏览器加载器的时候遇到404错误,将这些提交给我们 用户论坛...
他们也许是Bug\!
在这个教程中, 当使用"open"命令的时候我无法访问Google!
首先, 完成这个教程. 确定你已经仔细阅读了关于"Same Origin Policy" 章节.
有几个可能的原因导致这个现象:
- 也许是个简单的问题,你将命令输入错误了. 确定你输入的命令确实和教程里的相同.
- Selenium RC 自动配置浏览器使用Selenium Server作为代理. 但是如果你需要使用其他的代理来访问因特网, 那样使用Selenium Server作为代理时候,你将不能访问Google. (Selenium Server不会自动使用你的代理; 它会尝试直接连接Google.)
如果你需要使用代理访问你想要测试的应用, 你需要使用"-Dhttp.proxyHost"参数启动Selenium Server. 详细请参见命令行选项.
当使用Selenium RC时为什么会有许可拒绝的错误?
这通常是因为[Same Origin Policy]的冲突. 如果浏览器从一个源开始会话,但是你去试图访问来自另外一个源的页面(不同的域名,协议或者端口), 你会遇到这些许可拒绝的错误。
大部分情况下,你可以通过确保你的浏览器从正确的源开始会话来修复这些错误。你不能从google.com开始一个浏览器会话来测试www.google.com, 因此你只需要从正确的源开始启动浏览器会话。如果因为某些原因你需要能够访问在不同域名上的站点, 那么唯一的方式就是使用我们提供的一种实验性的浏览器加载器.
Selenium Server只以一种特殊的配置加载浏览器(如弹出窗口阻拦等)。如果测试需要浏览器以不同配置运行,该如何去做?
一般情况下,Selenium RC会自动配置你的浏览器,但是如果使用"*custom"加载浏览器,可以在不改变配置的情况下强制Selenium RC以as-is方式加载浏览器。(这也是你加载其他Selenium RC尚未显示支持的浏览器的一种方式)
例如,你可以以类似以下自定义的配置加载Firefox
cmd=getNewBrowserSession&1=*custom c:\Program Files\Mozilla Firefox\firefox.exe&2=http://www.google.com
注意当使用这种方式加载浏览器的时候,你需要手动的把Selenium Server配置成浏览器的代理。(一般来说,这只意味着打开浏览器自定义对话框,指定localhost:4444作为HTTP代理,但是这个因为浏览器的不同而不同,可以查看浏览器文档取得更详细的信息。)
小心Mozilla 浏览器在启动和停止的时候会有点小的麻烦。你也许需要设置MOZ_NO_REMOTE环境变量使Mozilla浏览器的行为稍微更加可以预计。Unix用户应该避免不要使用shell来加载浏览器。一般来说好的方法是直接使用二进制可执行文件(如firefox-bin)。
如果你尝试使用 *custom 加载浏览器,但是没有正确配置代理,你也许不能通过哪怕是很简单的一个Google测试,因为访问http://www.google.com/selenium-server/
时会有一个404(文件未找到)的错误返回。记住,目录在Google.com上并不实际存在;只有正确配置了代理它才看起来像是存在的。注意在一些浏览器中时很容易犯错误的,所以在配置了代理,但是却没有任何效果的时候修改错误的配置。
一个区分你是否已经正确配置代理了的办法是试着故意将浏览器配置错误。尝试给浏览器配置错误的代理服务器主机或者端口号。如果你成功将浏览器的代理配置错误,你的浏览器将无法连接到因特网,这将可以确定你调整了一些相关的设置。
例如,你可以尝试将浏览器的代理服务器主机名配置成"asdflkjdasf",端口设成"1234"。然后像往常一样访问google.com,并且检索点什么东西。如果可以成功的连接到Google并可以检索的话,说明你一定没有修改掉你的代理配置\!当使用正确的设置时(localhost 4444端口),你也许会尝试关掉Selenium Server。如果禁掉代理,你也不能够连接到Google。如果看起来可以的话,那么你就可以知道你一定犯了什么错误。
要知道的是这个问题在IE上确实可能成为一个难题,因为IE有时候会忽视任何配置的代理设置,即使是手工的\!(这一般发生在使用拨号连接因特网,或者使用VPN时。)那样,你将根本无法配置代理。作为替代,你可以使用试验的*iehta 浏览器加载器
在Linux上, 为什么我的Firefox session会话不关闭?
在Unix/Linux上,我们需要直接使用"firefox-bin",因此确定可执行文件是否在路径上。如果我们强制通过shell脚本执行Firefox,关掉Selenium RC也会杀掉shell脚本进程,留下浏览器自己运行。
如果必须的话,你可以像如下那样直接使用具体的路径:
cmd=getNewBrowserSession&1=*firefox /usr/local/firefox/firefox-bin&2=http://www.google.com