【问题标题】:Selenium webdriver connect timeoutSelenium webdriver 连接超时
【发布时间】:2017-03-23 02:32:23
【问题描述】:

我在我的 Teamcity 构建服务器上运行 Selenium 测试。但是测试无法开始,出现以下错误消息:

OpenQA.Selenium.WebDriverException : 对远程的 HTTP 请求 网络驱动程序 URL http://localhost:56064/session 的服务器在 120 秒后超时。 ----> System.Net.WebException : 操作超时

测试基类(缩写):

public abstract class TestBase<T> where T : IWebDriver, new()
{
    protected IWebDriver Driver { get; set; }


    [TestFixtureSetUp]
    public void Setup()
    {
       this.Driver = new T();
    }

    protected void GotoUrl(string url)
    {
        var completeUrl = UrlFactory.Instance.GetTestUrl(url);

        Console.WriteLine("Starting test at " + completeUrl);

        this.Driver.Navigate().GoToUrl(completeUrl);

    }

}

测试类:

[TestFixture(typeof(FirefoxDriver))]
public class Dashboard<T> : TestBase<T> where T : IWebDriver, new()
{
    private const string Url = "RM/Dashboard/dashboard.aspx";

    [Test]
    public void HasCorrectHeading()
    {
        // Arrange         
        this.GotoUrl(Url);

        // Act
        var heading = this.Driver.FindElement(By.CssSelector(".pageheaderContainerxboxcontent span.H1"));

        // Assert
        Assert.That(heading, Is.Not.Null);
    }
}

测试在本地开发机器上运行良好,可能有什么问题?

Visual Studio 解决方案:

  • 不引用 Selenium 的 Web 项目
  • 使用这些参考单独的 UI 测试项目:

    • Selenium.WebDriverBackedSelenium 3.0.0.0
    • ThoughtWorks.Selenium.Core 3.0.0.0
    • WebDriver 3.0.0.0
    • WebDriver.Support 3.0.0.0

全部由 dll:s 引用,而不是 Nuget 提要。

在构建后事件中将文件“geckodriver.exe”和“chromedriver.exe”复制到 UI-tests 项目 bin 文件夹。

在 Windows Server 2008 R2 SP 1 上运行 TeamCity 10

【问题讨论】:

    标签: c# selenium selenium-webdriver teamcity


    【解决方案1】:

    像往常一样,当你不得不解释到底发生了什么时,你会偶然发现一些东西......

    我意识到 TeamCity 服务器上的 Firefox 已经很老了(v 30),所以我将它更新到最新版本,然后突然 - 测试运行了! :-)

    【讨论】:

    • 是的,我遇到了同样的问题。我更新了驱动程序,它起作用了。
    • 好的,但是我更新了构建机器上的 Firefox 浏览器,而不是驱动程序。
    • @NiklasRingdahl 如果您接受答案,其他人将能够更轻松地看到您的解决方案。 AFAIK 接受你自己的答案是绝对可以的
    • @cyberskunk 是的,但是将您自己的答案标记为正确有 2 天的“隔离”,截至目前还剩 30 分钟。 :-)
    【解决方案2】:

    在 GoToURL() 方法之后添加以下行:

    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
    

    【讨论】:

    • 谢谢,但从未调用过 GotoUrl 方法,TestSetup 失败。
    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多