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

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

OpenQA.Selenium.NoSuchWindowException:无法在c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs中的OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应errorResponse)中的关闭窗口上找到元素:第1076行在OpenQA.Selenium.Remium.RemoteWebDriver.FindElement的c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs:第862行中的OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute,Dictionary`2参数) (字符串机制,字符串值)c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs:第893行,位于c:\ Projects \ webdriver中的OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByName(String name) \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs:第5行,位于OpenQA.Selenium.By . <> c__DisplayClassa.b__8(ISearchContext context),位于c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ By.cs:line 144在OpenQA.Selenium.By.FindElement(ISearchContext context)c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ By.cs:li在c:\ Projects \ webdriver \ dotnet \ src \ webdriver \ Remote \ RemoteWebDriver.cs中的OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)中的内容:330行

Selenium版本:2.42 IE版本:11 OS: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();
                }