在Windows托管中运行Selenium时出现错误的预期浏览器二进制位置

时间:2018-11-27 09:02:49

标签: c# selenium selenium-webdriver

此示例工作: 获取google文本并显示在首页示例asp.net中 在Windows主机中测试正确的工作硒。

我想在托管plesk的Windows中运行硒。

我的错误:

  

“ /”应用程序中的服务器错误。

     

预期的浏览器二进制文件位置,但默认情况下找不到二进制文件   位置,没有提供“ moz:firefoxOptions.binary”功能,也没有   在命令行(SessionNotCreated)上设置的二进制标志

     

说明:执行以下操作时发生未处理的异常   当前的Web请求。请查看堆栈跟踪以获取更多信息   有关错误及其在代码中起源的信息。

     

异常详细信息:System.InvalidOperationException:预期的浏览器   二进制位置,但无法在默认位置中找到二进制,否   提供了“ moz:firefoxOptions.binary”功能,并且没有二进制标志   在命令行(SessionNotCreated)上设置

     

源错误:

     

在执行过程中生成了未处理的异常   当前的Web请求。有关原产地和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。   堆栈跟踪:

     

[InvalidOperationException:预期的浏览器二进制位置,但是   无法在默认位置找到二进制文件,否   提供了“ moz:firefoxOptions.binary”功能,并且没有二进制标志   在命令行上设置(SessionNotCreated)]
  OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应   errorResponse)+1059
  OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串   driverCommandToExecute,字典的2个参数)+125
  OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities   requiredCapabilities)+235
  OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor   commandExecutor,ICapabilitiesdesireCapabilities)+54
  OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxOptions选项)   +81 WebDriverwithwebapp._Default.Page_Load(对象发送者,EventArgs e)+178
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送方,   EventArgs e)+51 System.Web.UI.Control.OnLoad(EventArgs e)+95
  System.Web.UI.Control.LoadRecursive()+59
  System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,布尔值includeStagesAfterAsyncPoint)   +678

   protected void Page_Load(object sender, EventArgs e)
    {

        FirefoxOptions options = new FirefoxOptions();
        options.BrowserExecutableLocation = ("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); //This is the location where you have installed Firefox on your machine

       // WebDriver driver = new FirefoxDriver(options);

        using (var FireFoxPage = new FirefoxDriver())
        {
            //_driver = new FireFoxDriver();
            _driver.Manage().Window.Maximize();
            _driver.SwitchTo().Window(_driver.CurrentWindowHandle);
            _driver.Manage().Cookies.DeleteAllCookies();
            // _driver.Manage().Timeouts().ImplicitWait(TimeSpan.FromSeconds(3));

            _driver.Navigate().GoToUrl("https://google.com/");

            _driver.FindElement(By.Id(Button_ID)).Click();


          IwebElement  Element1 = _driver.FindElement(By.XPath("/html/body/main/div/div/div[3]/span"));
            ksc = Element1.Text.ToString();

            Label1.Text = ksc.ToString();

            _driver.Quit();
            Process[] geckodriverProcesses = Process.GetProcessesByName("geckodriver");
            foreach (var geckodriver in geckodriverProcesses)
            {
                geckodriver.Kill();
            }

        }



    }

1 个答案:

答案 0 :(得分:0)

尝试将options变量传递到new FirefoxDriver()的参数中。这样对我有用:

FirefoxOptions options = new FirefoxOptions();
    options.BrowserExecutableLocation = ("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); //This is the location where you have installed Firefox on your machine

   // WebDriver driver = new FirefoxDriver(options);

    using (var FireFoxPage = new FirefoxDriver(options))
    {
   //...

实际上,我在使用options对象的情况下看到带注释的变量,使用它是否有任何错误?