OpenQA.Selenium.NoSuchWindowException:无法在关闭窗口中找到元素

时间:2014-09-09 21:26:56

标签: c# internet-explorer selenium

我第一次厌倦了使用Selenium来检查登录到一个应用程序。 当我在当地尝试时,一切都运转良好。

但是当我将它部署到我的服务器时,它会抛出以下错误:

OpenQA.Selenium.NoSuchWindowException:无法在关闭窗口中找到元素    at c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs中的OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse):第1076行    在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute,Dictionary`2参数)在c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs:第862行    at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism,String value)在c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs:第893行    at c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs中的OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByName(String name):第595行    在OpenQA.Selenium.By。<> c__DisplayClassa.b__8(ISearchContext context)中的c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ By.cs:第144行    at c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ By.cs中的OpenQA.Selenium.By.FindElement(ISearchContext context):第309行    在OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)中的c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs:第330行

Selenium版本:2.42 IE版:11 操作系统:Windows Server 2008 R2 Enterprise

我已经为四个区域启用了保护模式。 还在“高级”选项卡下禁用了“增强保护模式”。

我确实看到有一个帖子用于进行注册表更改但是作为公司服务器,我很难过这样做。 https://code.google.com/p/selenium/wiki/InternetExplorerDriver#Required_Configuration...there%27s

奇怪的是,相同的代码在我的本地工作,但在部署时却没有。

我也试过使用32位和64位IE。

我还在Path Environment Variables中包含了IEDriverServer路径。

还尝试使用Wait方法,但即使我将其增加到10分钟,它仍然会超时。

所以我对选项感到筋疲力尽,因为我似乎尝试了大部分事情,但都是徒劳的。如果您相信我遗留了任何东西,请帮助我指导它,我将非常乐意尝试。

另外,作为要求,我只需要使用IE 11。

我收到了错误:  IWebElement userNameTxt = driver.FindElement(By.Name(" USER"));

以下是代码:

                string IE_DRIVER_PATH = AppSetting.Get("Driver Path");
                var options = new InternetExplorerOptions();

                IWebDriver driver = new InternetExplorerDriver(IE_DRIVER_PATH, options);

                driver.Manage().Window.Maximize();

                try
                {

                    driver.Url = url;
                    IWait<IWebDriver> wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60.00));
                    wait.Until(ExpectedConditions.ElementExists(By.Name("USER")));

                    IWebElement userNameTxt = driver.FindElement(By.Name("USER"));
                    IWebElement passwordTxt = driver.FindElement(By.Name("PASSWORD"));

                    userNameTxt.SendKeys(username);
                    passwordTxt.SendKeys(password);

                    IWebElement loginBtn = driver.FindElement(By.Name("LOGIN"));
                    loginBtn.Click();


                    IWebElement afterLoginWait = wait.Until<IWebElement>((d) =>
                    {
                        return d.FindElement(By.Id("navigation"));
                    });

                    IWebElement logoutTxt = driver.FindElement(By.CssSelector("[href='/Session/Logout']"));
                    logoutTxt.Click();
                }

                catch (Exception ex)
                {
                    logging.AppendLogData("Failure logging to : " + url + ".", ex);
                    emailMessage.AppendLine("Issue in accessing : " + url + ".</tr>");
                }

                finally
                {
                    driver.Close();
                    driver.Dispose();
                }

0 个答案:

没有答案