Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OpenQA.Selenium.NoSuchWindowException:在关闭的窗口中找不到元素_C#_Internet Explorer_Selenium - Fatal编程技术网

C# OpenQA.Selenium.NoSuchWindowException:在关闭的窗口中找不到元素

C# OpenQA.Selenium.NoSuchWindowException:在关闭的窗口中找不到元素,c#,internet-explorer,selenium,C#,Internet Explorer,Selenium,我第一次厌倦了使用Selenium检查一个应用程序的登录。 当我尝试我的本地电脑时,一切都很好 但当我将其部署到服务器时,它会抛出以下错误: OpenQA.Selenium.NoSuchWindowException:在关闭的窗口中找不到元素 在c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs中的OpenQA.Selenium.Remote.RemoteWebDriver.unpack和rownerError

我第一次厌倦了使用Selenium检查一个应用程序的登录。 当我尝试我的本地电脑时,一切都很好

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

OpenQA.Selenium.NoSuchWindowException:在关闭的窗口中找不到元素 在c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs中的OpenQA.Selenium.Remote.RemoteWebDriver.unpack和rownerErrorResponse错误响应:第1076行 在OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteString driverCommandToExecute中,c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs中的Dictionary`2参数:第862行 在OpenQA.Selenium.Remote.RemoteWebDriver.FindElementString机制中,c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs中的字符串值:第893行 在c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs中的OpenQA.Selenium.RemoteWebDriver.FindElementByNameString name中:第595行 在c:\Projects\webdriver\dotnet\src\webdriver\By.cs中的OpenQA.Selenium.By.c\uuuu显示ClassA.b\uuu 8ISearchContext上下文:第144行 在c:\Projects\webdriver\dotnet\src\webdriver\By.cs中的OpenQA.Selenium.By.FindElementISearchContext上下文中:第309行 在c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs中的OpenQA.Selenium.Remote.RemoteWebDriver.FindElementBy中:第330行

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

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

我确实看到有一篇文章是关于修改注册表的,但作为公司服务器,我不喜欢这样做。

奇怪的是,相同的代码在我的本地服务器上运行,但在我部署它时却没有

我还尝试使用32位和64位IE

我还将IEDriverServer路径包含在path环境变量中

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

所以我有点疲惫不堪的选择,因为我似乎已经尝试了大部分的事情,但都是徒劳的。如果你相信我留下了什么,请帮我直奔它,我会非常乐意尝试的

同样作为一种要求,我只需要使用IE11

我在第行得到错误信息: IWebElement userNameTxt=driver.FindElementBy.NameUSER

代码如下:

                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();
                }

因此,请开始查看本地计算机和服务器之间的差异。有一件事传到了我的脑海:测试是如何在本地和服务器上运行的,这有什么不同吗?谢谢Arran。基本上,我需要每隔几分钟测试一次登录,如果有任何问题,应该通知我们。这是一种监控工具。在本地,我使用单元测试来测试它,而在服务器上,我部署dll,它作为windows服务运行。另外,我认为当我尝试运行windows服务时,出现了一些问题。我也将服务部署到我的本地服务器,它抛出了相同的错误。但仍然不确定为什么它在windows服务中使用时不运行。windows服务是否在特定用户下运行?我知道如果它登录的用户没有交互式桌面会话,可能会出现问题。是的,它在服务帐户下运行,让我检查它是否有交互式桌面会话。说得好,阿伦。我会很快告诉你我的发现。@Aaran。。在选择本地系统帐户并选中“允许服务与桌面交互”后,我可以启动IE,但问题是我们在这之后会弹出窗口,我需要选择“查看消息”,然后我可以看到带有预期URL的浏览器,但不幸的是,它似乎崩溃了。我禁用了交互式服务检测以消除弹出窗口,但再次遇到了与之前相同的问题,即找不到窗口元素。还有其他建议吗?