作为可执行文件运行时,Selenium/Chromedriver自动挂起

作为可执行文件运行时,Selenium/Chromedriver自动挂起,selenium,selenium-webdriver,selenium-chromedriver,Selenium,Selenium Webdriver,Selenium Chromedriver,我正在尝试创建一个简单的自动化任务。现在我想登录到这个网页。当我在Visual Studio 2017中运行测试时,这一切都很好。然而,这将需要在windows系统中定期以exe的形式执行。运行可执行文件时,它会在显示以下内容后挂起: 启动ChromeDriver 2.32.498550 9DEC58E66C31BC53A9CE3C7226F0C1C5810906A 在9515端口 只允许本地连接 我理解这只是一个信息,而不是一个错误,因此大多数与此问题相关的帖子,如- 注意:我的浏览器不会启动

我正在尝试创建一个简单的自动化任务。现在我想登录到这个网页。当我在Visual Studio 2017中运行测试时,这一切都很好。然而,这将需要在windows系统中定期以exe的形式执行。运行可执行文件时,它会在显示以下内容后挂起:

启动ChromeDriver 2.32.498550 9DEC58E66C31BC53A9CE3C7226F0C1C5810906A

在9515端口

只允许本地连接

我理解这只是一个信息,而不是一个错误,因此大多数与此问题相关的帖子,如- 注意:我的浏览器不会启动

如何将测试代码作为可执行文件运行? 当作为可执行文件运行时,我是否必须编写额外的代码来调用测试

命名空间RevuSeleniumAutomation { 使用Microsoft.VisualStudio.TestTools.UnitTesting; 使用OpenQA.Selenium; 使用OpenQA.Selenium.Chrome; 使用OpenQA.Selenium.Firefox; 使用OpenQA.Selenium.IE; 使用OpenQA.Selenium.Remote; 使用OpenQA.Selenium.PhantomJS; 使用制度; [测试类] 公共类评论 { 专用字符串baseURL=http://example.com/; 专用远程网络驱动程序; 私有字符串浏览器; 公共TestContext TestContext{get;set;} [测试方法] [TestCategorySelenium] [优先权1] [所有者颜色] 公共空位 { 驱动器=新的镀铬驱动器; driver.Manage.Window.Maximize; driver.Manage.Timeouts.ImplicitlyWaitTimeSpan.fromsseconds30; driver.Navigate.GoToUrlthis.baseURL; driver.FindElementByIdUserName.SendKeysuser; driver.FindElementByIdPassword.sendKey12345; } [测试清理] 公共无效MyTestCleanup { 司机,退出; } [测试初始化] 公共无效MyTestInitialize { } } }


谢谢您的时间。

要以EXE运行,我认为有两种选择:

1不使用selenium服务器或网格 . 您需要将chromedriver.exe和代码打包到exe中 . 您的代码需要在运行时计算chromedriver.exe的路径,因为您不知道用户将把exe放在哪个文件夹中 . 通过ChromeOptions指定chromedriver.exe,告诉selenium在创建驱动程序实例时在何处找到它

这种方式的不足:certian版本的chromedriver.exe支持有限的chrome版本,而不是所有的chrome版本,您需要告诉用户exe支持哪个chrome版本

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

这种方法的不足:在执行EXE之前,需要准备一个selenium服务器/网格,
但是您的代码不需要考虑Chrome和Chrome Debug .exe的兼容性,因为在安装SeleServer/Grid时,他们已经考虑过。

您是否在Visual Studio中运行,并且在同一台机器上运行exe?如果是这样,它应该在Visual Studio中运行,因为两者都使用相同的chrome和chromedriver.exe。问题是chrome驱动程序挂起&您需要在再次调用exe之前退出所有chromedriver进程。示例cmd命令可以用作代码的第一部分:taskkill/F/IM chromedriver.exe/T需要在cmd上运行。对于选项1,您可以使用配置文件作为选项2,由用户自行设置chromedriver.exe的路径。