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