如何在C#中隐藏chromedriver.exe控制台窗口?

时间:2020-01-10 10:58:27

标签: c# selenium selenium-webdriver selenium-chromedriver

我正在使用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();

1 个答案:

答案 0 :(得分:1)

您需要修改源代码,尝试像这样使用:

all_tables = soup.findAll('table', {'class': 'dataTables_wrapper no-footer'})
print(all_tables)

如果您正在运行控制台应用程序,请尝试修改您的应用程序属性-Outputtype应该是“ Window Application”而不是“ Console Application”。

相关问题