Я пишу две программы, используя C#, и я использую эти ссылки, установленные через NuGet в обеих:
<package id="Selenium.WebDriver" version="3.141.0" targetFramework="net472" />
<package id="Selenium.WebDriver.ChromeDriver" version="79.0.3945.3600" targetFramework="net472" />
Код одной из программ просто открывает браузер Google Chrome с Профиль по умолчанию и собственное расширение, он перемещается на страницу и выполняет некоторые операции. Другая программа ищет открытый браузер и выполняет операцию. Когда обе программы запускаются, появляется консольное окно (кажется, оно принадлежит chromedriver.exe), а затем открывается браузер. Когда программы заканчиваются, окно консоли остается открытым. Эта вторая программа будет запускаться много раз. Моя проблема в том, что каждый раз, когда программа завершает работу, окно консоли остается открытым.
Можно сказать, что я пробовал кое-что посмотреть, как он себя ведет: если я закрою браузер вручную, окно консоли останется открытым, но если я закрою окно консоли вручную вместо браузера, браузер закроется. Это дает понять, что окно консоли должно быть открыто, чтобы браузер оставался открытым. Я тоже пытался использовать driver.Quit()
и driver.Close()
. Первый закрывает окно браузера и консоли, второй - только браузер.
Моя идея - запускать первую программу при включении компьютера и запускать вторую программу с другого компьютера столько раз, сколько необходимо. Но я не хочу, чтобы окно консоли оставалось открытым при каждом запуске. Есть ли способ, которым это окно консоли не открывается?
Мой код первой программы следующий:
ChromeOptions options = new ChromeOptions();
options.AddExtension("[Path]");
options.AddArgument("--remote-debugging-port= [PortNumber]");
options.AddArgument("--user-data-dir=[Path]");
IWebDriver driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("http://www.google.es");
, а вторая программа такова:
ChromeOptions options = new ChromeOptions();
options.DebuggerAddress = "localhost:[PortNumber]";
IWebDriver driver = new ChromeDriver(options);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement element;
element = driver.FindElement(By.ClassName("[ClassnName]"));
element.Click();