C#selenium webdriver引发WebDriver.dll中出现InvalidOperationException

时间:2016-06-15 13:49:28

标签: c# selenium selenium-webdriver automated-tests

我正在尝试使用selenium驱动程序进行自动化测试。

我已经安装了这个NuGet包:

enter image description here

我的简单代码和错误:

enter image description here

这是我的项目结构,参考文献:

enter image description here

我不知道问题是什么或在哪里?

更多信息

  • VS Professional 2013,版本12.0.40629.00更新5
  • .NET Framework版本4.6.01.0.55
  • Selenium.WebDriver 2.53.0
  • WebDriverChromeDriver 2.10
  • Google Chrome版本51.0.2704.84 m

查看详细信息...

错误System.InvalidOperationException:

中有View Detail ....

enter image description here

Stack Tracking消息:

   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout)
   at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions options)
   at OpenQA.Selenium.Chrome.ChromeDriver..ctor()
   at SeleniumFirst.Program.Main(String[] args) in c:\Users\roberto.cardenas\Documents\Visual Studio 2013\Projects\SeleniumFirst\SeleniumFirst\Program.cs:line 17
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

3 个答案:

答案 0 :(得分:1)

chromedriver.exe需要位于aplication dir中,并且propriet输出为“始终复制”。

其他方法是在创建对象时向chromedriver构造函数发送路径。这允许您将所有驱动程序放在当前项目中的目录中。例如:

var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Drivers";
var chromeDriver = new ChromeDriver(path);

// It will search in "[...]bin\Debug[or Release]\Drivers\chromedriver.exe"

答案 1 :(得分:1)

看起来您需要更新Chrome驱动程序。这是一个错误https://bugs.chromium.org/p/chromedriver/issues/detail?id=1257 最新版本为2.21

答案 2 :(得分:0)

确定问题出在chromedriver.exe文件中。我使用NuGet包管理器安装了2.10版,但我正在阅读post并执行了这些步骤。但是为了避免帖子的链接断开的答案,有解决方案:

因此,要解决此问题,您只需导航到http://chromedriver.storage.googleapis.com/index.html并下载最后一个稳定版本:

enter image description here

在我的情况下是2.20所以我导航到:http://chromedriver.storage.googleapis.com/index.html?path=2.20/

enter image description here

后来我将此驱动程序版本复制到C:目录并创建了驱动程序的路径:

class Program
{
    static void Main(string[] args)
    {
        string DRIVER_PATH = @"C:\";
        //create a reference to our browser
        IWebDriver chrome = new ChromeDriver(DRIVER_PATH);

        //navigate to google page
        chrome.Navigate().GoToUrl("http://www.google.com");

        IWebElement search = chrome.FindElement(By.Name("q"));

        search.SendKeys("executeautomation");
    }
}

一切都好。