我正在尝试创建一个简单的自动化任务。现在,我想登录到网页。当我在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时已考虑它们。