我第一次厌倦了使用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();
}