【问题标题】:Getting DriverServiceNotFoundException even specifying correct path获取 DriverServiceNotFoundException 甚至指定正确的路径
【发布时间】:2019-06-27 16:38:07
【问题描述】:

我有 VB.net 代码,它利用 Selenium 和 Chrome 驱动程序导航到页面并下载文件。无论是否指定无头选项,它都可以正常工作。但我也想抑制命令窗口。根据我阅读的内容,我需要启动 ChromeDriver,为 HideCommandPromptWindow 属性指定“true”。当我这样做时,我得到这个错误:

OpenQA.Selenium.DriverServiceNotFoundException H结果=0x80131500 Message=文件 False\chromedriver.exe 不存在。驱动可以在http://chromedriver.storage.googleapis.com/index.html下载 源=WebDriver 堆栈跟踪: 在 OpenQA.Selenium.DriverService..ctor(字符串 servicePath,Int32 端口,字符串 driverServiceExecutableName,Uri driverServiceDownloadUrl) 在 OpenQA.Selenium.Chrome.ChromeDriverService..ctor(字符串可执行路径,字符串可执行文件名,Int32 端口) 在 OpenQA.Selenium.Chrome.ChromeDriver..ctor(字符串 chromeDriverDirectory,ChromeOptions 选项) 在 OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory)

我正在使用出现在 CommandWindow 的 TitleBar 中的路径,我在它运行和工作时看到它,所以我知道路径和文件是有效的。

基于“文件 False\chromedrive.exe 不存在...”的错误消息这一事实,我为路径传递的 arg 似乎以某种方式评估为“假”。

这是正在运行的代码的 sn-p - 它在第 219 或 220 行出错:

    Dim cOpt As New ChromeOptions()
    cOpt.AddArguments("--headless", "--no-sandbox", "--disable-gpu")

    Dim param As New Dictionary(Of String, Object)
    param.Add("behavior", "allow")
    param.Add("downloadPath", G.gRadiusExportsFolder)

    Dim cdp As String = FixPathSlash(My.Application.Info.DirectoryPath, False)

    Dim d As New ChromeDriver(cOpt)
    'LINE 219-- Dim d As New ChromeDriver(ChromeDriverService.CreateDefaultService(cdp, "chromedriver.exe").HideCommandPromptWindow = True)
    'LINE220-- Dim d As New ChromeDriver(ChromeDriverService.CreateDefaultService(cdp, "chromedriver.exe").HideCommandPromptWindow = True, cOpt)

    Wait(5)
    d.ExecuteChromeCommand("Page.setDownloadBehavior", param)

【问题讨论】:

  • 驱动的路径在哪里?
  • D:\Steve.Strong\MathnasiumRelatedVisualStudioProjects\GetRAD\GetRAD\bin\Debug
  • 我的意思是你的代码在哪里。
  • 为了清楚起见,未注释的代码(第 218 行)工作正常。只有当我尝试 CreateDefaultService 时它才会出错。变量 cdp 是我传递的驱动程序的路径。它设置为“My.Application.Info.DirectoryPath”,这是我有驱动程序的地方。

标签: vb.net selenium-chromedriver


【解决方案1】:
    Dim cOpt As New ChromeOptions()
    cOpt.AddArguments("--headless", "--no-sandbox", "--disable-gpu")

    Dim param As New Dictionary(Of String, Object)
    param.Add("behavior", "allow")
    param.Add("downloadPath", G.gRadiusExportsFolder)

    Dim driverService = ChromeDriverService.CreateDefaultService()
    driverService.HideCommandPromptWindow = True
    Dim d As New ChromeDriver(driverService, cOpt)

    Wait(5)
    d.ExecuteChromeCommand("Page.setDownloadBehavior", param)

【讨论】:

  • 进行了一些更改 - 创建 driverService - 然后将 HideCommandPromptWindow 属性设置为 True。它现在完全无声地运行。
猜你喜欢
  • 2022-07-11
  • 2020-04-23
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多