【发布时间】:2012-09-01 13:36:02
【问题描述】:
我正在使用 Selenium、C#、NUnit 编写测试,有时我会遇到以下错误:-
OpenQA.Selenium.WebDriverException : 服务器没有响应 url httр://lоcalhost:7055/hub/session/8dd13f5c-7ca6-4aa6-babc-f0ff6d940f0a/element
这是堆栈跟踪:
OpenQA.Selenium.WebDriverException : 服务器没有响应 url httр://localhost:7055/hub/session/8dd13f5c-7ca6-4aa6-babc-f0ff6d940f0a/element 在 OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest 请求)在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\HttpCommandExecutor.cs:line 115 在 OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(命令 commandToExecute) 在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\HttpCommandExecutor.cs:line 96 在 OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Execute(命令 commandToExecute) 在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Firefox\Internal\ExtensionConnection.cs:line 128 在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串 driverCommandToExecute,Dictionary`2 参数)在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 795 在 OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(字符串 机制,字符串值)在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 836 在 OpenQA.Selenium.Remote.RemoteWebDriver.FindElementById(字符串 身份证)在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 431 在 OpenQA.Selenium.By.c__DisplayClass2.b__0(ISearchContext 上下文)在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\By.cs:line 102 at OpenQA.Selenium.By.FindElement(ISearchContext context) 在 c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\By.cs:line 272 at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 289在
.####.##.#####.#########.#####.ShareServicesTest.CreateShareWidget()
出现此错误的代码:
Driver.SwitchTo().Frame(frameElement);
var wait = new WebDriverWait(parentContextable.Context.Driver, Timeout);
IWebElement element = wait.Until(d => Driver.FindElement(By.TagName(Tags.Body))); // error in this line
我发现这个错误只能在这几行Selenium实现代码中抛出:
private static Response CreateResponse(WebRequest request)
{
Response commandResponse = new Response();
HttpWebResponse webResponse = null;
try
{
webResponse = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
webResponse = (HttpWebResponse)ex.Response;
}
if (webResponse == null)
{
throw new WebDriverException("No response from server for url " + request.RequestUri.AbsoluteUri);
}
else
{ ...
也许有人知道为什么 request.GetResponse() 返回 null,或者如果失败,为什么 ex.Response 也为 null?
(09.09.2012) 抱歉,我可能没有提供所有信息。我正在使用 FireFox 驱动程序、Win7、Selenium 2.25.1。我的测试有时会失败。调试模式下的测试失败率低于发布模式。
Here我找到了发生这种情况的可能原因。如果我写这样的代码:
Driver.SwitchTo().Frame(frameElement);
var wait = new WebDriverWait(parentContextable.Context.Driver, Timeout);
Tread.Sleep(250);
IWebElement element = wait.Until(d => Driver.FindElement(By.TagName(Tags.Body)));
测试运行正常。但是 Thread.Sleep 是不好的解决方案。也许有人可以找到另一个更好的解决方案。
【问题讨论】:
-
检查您的 Windows 防火墙设置?
-
只是想知道,您是否尝试过切换到不同的选择器?只是想知道错误是否仅在使用特定选择器时发生(有时)。