2

我正在用 Python 为 SeleniumRC 编写测试。测试针对 Ubuntu 中的 Firefox 实例运行。我有一个使用 BasicAuth 的网络应用程序。

在我的测试类的设置中,我在我的 web 应用程序中设置了一个页面(foo.html)。

我在此类中进行了很多测试,这些测试转到此页面并使用如下 URL 进行身份验证:

self.selenium.open('http://user:pass@%s:%s/foo.html' % (host, port))

我有一个测试(我们称之为 BAR),它创建另一个页面(bar.html),然后打开该页面:

self.selenium.open('http://user:pass@%s:%s/bar.html' % (host, port))

这是我的问题的中心:

  • 如果我只运行这一项测试(BAR),登录就可以了。
  • 如果我在执行 BasicAuth 的测试之前运行另一个测试并转到另一个 URL(如 foo.html,这在我的情况下很常见),我会得到一个 BasicAuth 屏幕。

如果我更改打开 bar.html 的调用并具有:

self.selenium.open('bar.html')
  • 如果我只运行这一项测试(BAR)登录失败(我得到一个 BasicAuth 屏幕)
  • 如果我在执行 BasicAuth 的测试之前运行另一个测试并转到另一个 URL,我可以成功转到该 URL。

所以问题基本上是:我不能总是做一个 BasicAuth 因为那样 BAR 测试大部分时间都会失败。从不做 BasicAuth 也不是一种选择,因为我不能指望 BAR 测试会在另一个测试做 BasicAuth 之后出现。

这个问题看起来像SeleniumRC docs 中描述的问题,但我不明白为什么在这种情况下这种重新身份验证会出错......

4

1 回答 1

2

对于火狐。尝试通过输入 url 更改以下标志about:config并搜索以下过滤器:

browser.safebrowsing.malware.enabled

在此处输入图像描述

您可以使用 about:config 服务页面在默认的 Firefox 配置文件中更改此标志的状态(双击该标志以更改其状态) 从现在开始,Firefox 应该允许您使用 url 中的名称和密码进行 http 身份验证。(请注意,如果您使用 Selenium WebDriver 2.6 或更高版本,则默认情况下应禁用此标志)

于 2012-06-06T04:56:33.083 回答