IE在WebDriver中调用navigate()后会丢失所有的windowandles

本文关键字:windowandles WebDriver 调用 navigate IE | 更新日期: 2023-09-27 18:12:50

我已经看到了很多相关的问题,但没有一个答案可以解决我的问题。我启动IEServerDriver,我的浏览器在默认的WebDriver页面加载。然后我有一个简单的调用,比如

WebDriver.Navigate().GoToUrl(urlthatredirectstohttps); 

砰,突然在一些浏览器上,在一些测试机器上,我失去了所有的窗口句柄,我的WebDriver变得不可用了。要么我得到一个窗口是关闭的异常,要么我得到一个无法获得浏览器异常。发生了什么事?我检查了所有的IE设置和版本,没有任何问题出现在我身上。让我展示一些硬代码…

var ieops = new InternetExplorerOptions(){
      IntroduceInstabilityByIgnoringProtectedModeSettings = true,
      EnsureCleanSession = true,
      RequireWindowFocus = true
   };
wrapperObject = (new InternetExplorerDriver(ieops));
wrapperObject.webDriver.Navigate().GoToUrl(url1);
Console.WriteLine("This will give an exception {0}",wrapperObject.webDriver.Title);

答案一定很简单,就在我眼前,但我却不知道该往哪个方向看

IE在WebDriver中调用navigate()后会丢失所有的windowandles

我找到了一个答案;在这里,测试执行现在发生

var ieops = new InternetExplorerOptions(){
      InnitialBrowserUrl = TheUrlIUse,
      EnsureCleanSession = true,
      RequireWindowFocus = true
   };

以上解决了特定盒子的问题。我不明白为什么代码应该在两个不同的盒子上不同地执行。这不是我在测试中喜欢的可重复性。在最初的导航中发生了什么?请把答案写在明信片上。