【问题标题】:Selenium Teamcity Chromedriver IWebDriver chrome does not launchSelenium Teamcity Chromedriver IWebDriver chrome 无法启动
【发布时间】:2016-07-20 18:26:41
【问题描述】:

试图远程执行 selenium 测试时卡住了。我们正在尝试在 TeamCity 服务器上执行 Selenium 测试。我知道这是个坏主意,但这不是我在这里的原因。 超级基本的 Nunit selenium webdriver / chrome。

 [TestFixture]
public class Mytest1
{
    private IWebDriver driver;
    private StringBuilder verificationErrors;
    private string baseURL;
    private bool acceptNextAlert = true;

    [SetUp]
    public void SetupTest()
    {

        ChromeOptions options = new ChromeOptions();
        options.AddArgument("\"no-sandbox\"");
        driver = new ChromeDriver(options);
        baseURL = "http://example.com/";
        verificationErrors = new StringBuilder();
    }

    [TearDown]
    public void TeardownTest()
    {
        try
        {
            driver.Quit();
        }
        catch (Exception)
        {
            // Ignore errors if unable to close the browser
        }
        Assert.AreEqual("", verificationErrors.ToString());
    }

    [Test]
    public void TheMytest1Test()
    {
        driver.Navigate().GoToUrl(baseURL + "/somepage/");
        driver.FindElement(By.LinkText("linktest")).Click();
        driver.FindElement(By.CssSelector("div.container-div.caption")).Click();
    }

当我从 VS 运行它时,我看到“正在启动 chromeDriver ver 2.22 等。只允许本地连接。”测试运行 100%。 我将更改提交到有 Nunit 任务运行器的 teamcity (v9.x)。反对测试。这就是它消亡的地方。直接在构建服务器上测试我在构建日志中看到以下内容。

    [18:07:43][Step 3/5] Starting ChromeDriver 2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b) on port 50513
[18:07:43][Step 3/5] Only local connections are allowed.
[18:08:46]
[SeleniumTests.Mytest1.TheMytest1Test] OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:50513/session timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
[18:08:46]
[SeleniumTests.Mytest1.TheMytest1Test]    at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
   at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions options)
   at SeleniumTests.Mytest1.SetupTest()
--WebException
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
--TearDown
   at SeleniumTests.Mytest1.TeardownTest()

我可以尝试使用 chrome.exe 做一些事情,但就是无法做到。这是不断弹出的错误。任何想法如何解决这个问题?我的假设是这是一个与权限相关的问题,但完全卡住了。

【问题讨论】:

    标签: selenium teamcity selenium-chromedriver


    【解决方案1】:

    问题似乎与您的 chrome 选项有关。
    options.AddArgument("\"no-sandbox\"");
    好像应该是options.AddArgument("--no-sandbox");
    您还指定二进制文件的位置吗?

    【讨论】:

    • 我目前正在将其作为权限类型的东西追究下去。我通过 nunit 控制台运行程序运行测试,并且测试立即在我需要运行测试的服务器上启动。我假设问题可能是由于构建代理作为本地服务运行。
    【解决方案2】:

    我的答案是 buildagent 作为本地服务运行。一旦我将其更改为作为本地用户帐户运行,一切都开箱即用。

    【讨论】:

      【解决方案3】:

      自 chrome v 51 发布以来,这个问题一直困扰着我。发生这种情况是因为 chrome 进程在 session[0] 中开始,这使得 chrome 无响应。 https://bugs.chromium.org/p/chromium/issues/detail?id=615396

      这是我一直在跟踪以跟踪问题的错误。 Chrome v 52 应该在今天发布一个修复程序,但这并没有解决我的问题。所以我不确定修复程序是否真的发布了,或者我是否遇到了不同的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-02
        • 2013-11-29
        • 1970-01-01
        • 2014-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多