以可执行操作运行时,Selenium/Chromedriver自动化悬挂



我正在尝试创建一个简单的自动化任务。现在,我想登录到网页。当我在Visual Studio 2017中运行测试时,这一切都很好。但是,这需要在Windows系统中的常规间隔内作为EXE执行。当我运行可执行文件时,它在显示后悬挂着:

启动Chromedriver 2.32.498550(9DEC58E66C31BCC53A9CE3C7226F0C1C1C5810906A)

在端口9515

只允许本地连接。

我知道这只是信息,而不是最多的错误,因此与此问题相关的帖子,例如 - 使用Chrome浏览器运行WebDriver,获取消息,"仅允许本地连接"。即使浏览器启动正确(注意:我的浏览器未启动)

如何作为可执行文件运行测试代码?我是否必须编写其他代码以调用作为可执行文件运行的测试?

nuget版本信息

namespace RevuSeleniumAutomation
{
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.PhantomJS;
using System;
[TestClass]
public class RevuAutomater
{
    private string baseURL = "http://example.com/";
    private RemoteWebDriver driver;
    private string browser;
    public TestContext TestContext { get; set; }
    [TestMethod]
    [TestCategory("Selenium")]
    [Priority(1)]
    [Owner("Chrome")]
    public void AutomateSite()
    {
        driver = new ChromeDriver();
        driver.Manage().Window.Maximize();
        driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
        driver.Navigate().GoToUrl(this.baseURL);
        driver.FindElementById("UserName").SendKeys("user");
        driver.FindElementById("Password").SendKeys("12345");
    }
    [TestCleanup()]
    public void MyTestCleanup()
    {
        driver.Quit();
    }
    [TestInitialize()]
    public void MyTestInitialize()
    {
    }
}

}

启动exe

后的CMD窗口消息

谢谢您的时间。

以exe运行,我认为有两个选择:

1)不使用硒服务器或网格
。您需要带代码的chromedriver.exe包到exe
。您的代码需要在运行时计算Chromedriver.exe的路径,因为您不知道用户会将EXE放入哪个文件夹
。通过Chromeoptions指定Chromedriver.exe,以告诉Selenium在创建驱动程序实例时在哪里找到

这种方式短缺:Chromedriver.exe of Certian版本支持有限的Chrome Verions,而不是所有Chrome verions,您需要告诉用户哪个Chrome exe支持。

2)使用硒服务器/网格
。您的代码需要从配置文件中接受硒服务器/网格地址,用户可以修改它
。使用上述地址创建remotewebdriver实例,而不是代码中的Chromedriver
。无需用您的代码打包chromedriver.exe

这种方式短缺:硒服务器/网格需要在执行EXE之前准备就绪,但是您的代码无需考虑Chrome和Chromedriver.exe的兼容性,因为在设置Selenium Server/Grid时已考虑它们。

最新更新