【发布时间】:2014-03-24 16:43:33
【问题描述】:
我刚刚重建了我的开发机器,现在在运行 Selenium 测试时遇到了问题。我知道我的设置存在问题,因为当我将新代码和测试推送到构建服务器时,它们毫无问题地通过了。在这台机器上重建之前,过去的测试也没有问题地通过。为了尝试隔离错误,我已将我的测试用例简化为最简单的。
- Firefox:21.0(也产生与 Firefox 22.0 和 23.0 相同的行为)
- NuGet 包:Selenium.WebDriver 2.40.0 和 Selenium.Support 2.40.0
- Visual Studio 2010 SP1。
我的站点测试站点是本地 ASP.NET MVC 站点,响应请求的时间不到 200 毫秒。
我的简单失败案例如下,尝试登录:
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using System.Threading;
class Program
{
static void Main(string[] args)
{
FirefoxDriver driver = new FirefoxDriver();
try
{
driver.Navigate().GoToUrl("http://test.mysite.com/Account/Login/");
driver.FindElement(By.Name("UserName")).SendKeys("AdminUser");
driver.FindElement(By.Name("Password")).SendKeys("AdminPassword");
driver.FindElement(By.Id("log-in-btn")).Click();
}
finally
{
driver.Quit();
}
}
}
问题在于它并不总是失败,也不总是在同一个地方失败。有些运行所有命令都会执行。在其他时候,任何 FindElement 行都会失败并出现以下错误:
NullReferenceException 对象引用未设置为 OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest 请求)处的对象实例
WebDriverException 对 URL http://localhost:7055/hub/session/eff6f0c7-84e1-451d-adc8-1f02324d08ae/element 的远程 WebDriver 服务器的 HTTP 请求在 60 秒后超时。在 OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest 请求)
即使测试在一段时间后出现上述错误之一,测试浏览器仍然保持响应,并且可以手动完成测试。
我真的为这事而抓狂。在过去的几天里,我尝试了许多不同的组合,例如不同的 Firefox 版本,切换到 Chrome,切换回 Selenium.WebDriver 2.39.0,结果都一样。
我意识到这对于 Selenium 来说是一个非常流行的错误,但我希望这个简单的测试用例可以帮助追踪导致它的特定版本的原因。
【问题讨论】:
-
你的睡眠无济于事。此外,在另一个浏览器中尝试它并有一个我们都可以尝试的实际测试用例会很有用。
-
@Arran 无论有没有睡眠都会失败。如上所述,我的 Chrome 驱动程序也处于同样的情况。
-
@GilesRoberts - 你是否打开了防病毒/防火墙/UAC?万一这些可能会干扰,您可以将它们关闭然后尝试吗?
-
@Faiz 哦,你的美女。在我之前的调查中,我已经关闭了防火墙,但是一旦我关闭了防病毒软件,一切就开始正常工作了。出于好奇,我正在运行 Microsoft Security Essentials,然后我进入了设置 |实时保护未勾选开启实时保护。发表您的评论作为答案,我会接受。显然,我将不得不重新审视我的防病毒软件。
-
@GilesRoberts - 完成 :) 很高兴能提供帮助。
标签: c# google-chrome firefox selenium selenium-webdriver