57

我无法启动IE浏览器来运行用Java编写的selenium自动测试。我正在使用Windows 7和IE 9。下面是我的代码:

请找到附件。在此处输入图像描述

公开课GoogleNews{私有WebDriver驱动程序;私有字符串baseUrl;private StringBuffer verificationErrors=new StringBuff();ArrayList al=新的ArrayList();@之前public void setUp()引发异常{//driver=新FirefoxDriver();driver=新的InternetExplorerDriver();baseUrl=“https://news.google.co.in/”;}@测试public void testApple()引发异常{driver.get(baseUrl);}}
5
  • 你能复制并粘贴代码吗?
    – 猛禽
    2013年2月19日7:48
  • 1
    我在控制台中收到此消息-“Started InternetExplorerDriver server(64-bit)2.30.0.0 Listing on port 27576” 2013年2月19日8:28
  • 2
    上面是一条信息消息。收到后会发生什么? 2013年2月19日8:44
  • Manigandan-浏览器未打开。 2013年2月19日9:05
  • org.openqa.selenium.remote。SessionNotFoundException:启动Internet Explorer时发生意外错误。所有区域的保护模式设置都不同。所有区域的“启用保护模式”必须设置为相同的值(启用或禁用)。(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:1.18秒内部版本信息:版本:“2.30.0”,修订版:“dc1ef9c”,时间:“2013-02-19 00:15:57”系统信息:os.name:“Windows 7”,os.arch:“x86”,os.version:“6.1”,java.version:“1.7.0” 2013年2月19日9:26

10个答案10

重置为默认值
149

它需要在所有区域中设置相同的安全级别。为此,请遵循以下步骤:

  1. 信息抽取
  2. 转到“工具”->“Internet选项”->“安全”
  3. 将所有区域(Internet、本地intranet、受信任的站点、受限制的站点)设置为相同的保护模式,启用或禁用都无关紧要。

最后,右键单击位于右上角的齿轮并启用状态栏,将缩放级别设置为100%。默认缩放级别现在显示在右下角。

  • 我仍然看不到它对我有效。我使用的是Win7和IEDriverServer_x64_2.43.0,即使按照您的指示操作,也会出现此错误。错误为“org.openqa.selenium.remote.SessionNotFoundException:启动Internet Explorer时发生意外错误。” 2014年10月21日3:51
  • 浏览此链接:linkedin.com/pulse/… 2018年4月3日13:41
  • 企业安全通常不允许您更改所有区域的默认安全级别。这样做可能会使您的系统易受攻击。设置通过IgnoringProtectedModeSettings介绍不稳定性做到这一点是正确的。请看下面我的答案。
    – 海克
    2020年2月12日13:42
20

正如堆栈跟踪所述,您需要将IE中所有区域的保护模式设置设置为相同。请阅读此处的原因:http://jimevansmusic.blogspot.in/2012/08/youre-doing-it-wing-protected-mod-and.html

以及如何从同一链接快速操作:“在IE中,从工具菜单(或更高版本工具栏中的齿轮图标)中选择”互联网选项。转到“安全”选项卡。在每个区域的对话框底部,您应该会看到一个标记为“启用保护模式”的复选框。为每个区域将复选框的值设置为相同的值(选中或取消选中)

1
  • +1.比接受的答案好得多,因为链接的博客文章解释了为什么以及为什么应该将所有区域设置为受保护的(接受的答案可能会误导您关闭保护模式) 2015年11月13日17:21
13

以下WebDriver Java代码片段应该可以启动IE。该代码将忽略IE浏览器中所有区域的保护模式设置设置。

DesiredCapabilities功能=DesiredCapabilities.internetExplorer();capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);文件文件=新文件(“D:\\Ripon Al Wasim\\IEDriverServer.exe”);System.setProperty(“webdriver.ie.driver”,file.getAbsolutePath());WebDriver驱动程序=新的InternetExplorer驱动程序(功能);司机。get(“https://www.google.com/");

下载IEDriverServer并将其提取到您想要的位置,然后设置绝对路径(在我上面的例子中,它是“D:\Ripon Al Wasim\IEDriverServer.exe”)

  • 7
    请勿使用INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS。这是一种黑客行为,允许人们在无法正确配置浏览器的锁定环境中运行测试。使用此设置将产生随机故障和一般不稳定性。它绝对不应该被用作理所当然的事情。 2013年2月21日17:01
  • 使用上述代码不需要为所有区域的保护模式设置配置相同的级别(启用/禁用)。 2016年3月14日12:54
  • 我在代码中意外使用了INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS。现在如何禁用它? 2018年4月6日19:16
4

与其对IEDriverServer.exe使用绝对路径,不如根据项目使用相对路径。

DesiredCabilities capabilities=DesiredCabilities.internetExplorer();capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);文件fil=新文件(“iDrivers\\IEDriverServer.exe”);System.setProperty(“webdriver.ie.driver”,fil.getAbsolutePath());WebDriver驱动程序=新的InternetExplorerDriver(功能);driver.get(“网址:https://www.irctc.co.in");
  1. IE->工具->Internet选项.
  2. 转到“安全”选项卡。
  3. 为所有(Internet、本地Intranet、受信任的站点和受限制的站点)启用/禁用保护模式

希望共享实际代码,因为很少有人会对如何实现它感到困惑。这是针对C#NUNIT实现的。您需要这样做,因为您的公司可能出于明显的原因不允许您更改默认安全设置。祝你好运!

InternetExplorerOptions选项=新的InternetExplorer选项();选项。IntroductionInstabilityByIgnoringProtectedModeSettings=true;选项。Ignore ZoomLevel=true;驱动程序=新InternetExplorerDriver(“C:\\Users\\stdd\\Desktop\\SLL\\SLLAutomation”)+“\\Clysis\\STGSearch\\STGClaSearch\\Driver\\”,选项);驱动程序。管理()。窗口。最大化();
2

NighwatchJS使用:

“ie”:{“所需功能”:{“浏览器名称”:“internet explorer”,“javascriptEnabled”:true,“acceptSslCerts”:正确,“allowBlockedContent”:true,“ignoreProtectedModeSettings”:真}},
1
  • 1
    这个ignoreProtectedMode设置帮助我;我没有管理员,无法在IE设置中更改保护模式。 2017年7月31日20:01
2

要解决此问题,您必须做两件事:

  1. 您需要在目标计算机上设置注册表项,以便驱动程序可以维护与Internet实例的连接它创建的资源管理器。

  2. 更改该计算机上Internet Explorer浏览器的一些设置(您希望运行自动化的地方)。

1。设置注册表项:

  • 要设置注册表项,您需要打开“注册表编辑器”。

  • 要打开“注册表编辑器”,请按windows按钮键+r字母键这将打开“运行窗口”,然后键入“regedit”并按enter。

  • 或按Windows按钮键并在开始菜单中输入“regedit”,然后按enter键。现在,根据您的操作系统类型,32/64位是否遵循相应的步骤。

32位Windows:转到此位置-“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl”并检查“FEATURE_BFCACHE”键。

64位Windows:转到此位置-HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl并检查“FEATURE_BFCACHE”键。请注意这个功能_缓存子键可能存在也可能不存在,并且应创建如果它不存在。

重要提示:在该键中,创建一个名为iexplore.exe的DWORD值,其值为0。

注册表设置

2 . 更改Internet Explorer浏览器的设置:

  • 单击设置按钮并选择“Internet选项”.

  • 在“Internet选项”窗口中,转到“安全”选项卡

  • 现在选择“互联网”选项并取消选中“启用保护模式”复选框,并将“安全级别”更改为低。

  • 现在选择“本地Intranet”选项并将“安全级别”更改为低。

  • 现在选择“受信任的站点”选项并将“安全级别”更改为低。

Internet选项

  • 现在点击“应用”按钮时,可能会出现一个警告弹出窗口,单击“OK”按钮进行警告,然后单击“Internet Options”(Internet选项)窗口上的“OK”(确定)按钮。

保存设置

  • 在此之后,重新启动浏览器。
0
1

我无法在系统上手动修改保护模式设置,因为它们已被禁用。但下面用于更新注册表值的VBA代码段对我来说很有用。(在尝试此操作之前,请注意您的组织在修改注册表方面的任何限制)

Const HKEY_CURRENT_USER=&H80000001strComputer=“.”设置ScriptMe=GetObject(“winmgmts:{模拟级别=模拟}!\\”&_strComputer&“\root\default:StdRegProv”)'禁用本地intranet的保护模式'strKeyPath=“Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\”strValueName=“2500”dwValue=0ScriptMe。设置DWORDValue HKEY_CURRENT_USER、strKeyPath、strValueName、dwValue'禁用受信任页面的保护模式'strKeyPath=“Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\”strValueName=“2500”dwValue=0ScriptMe。设置DWORDValue HKEY_CURRENT_USER、strKeyPath、strValueName、dwValue'禁用互联网的保护模式'strKeyPath=“Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\”strValueName=“2500”dwValue=0ScriptMe。设置DWORDValue HKEY_CURRENT_USER、strKeyPath、strValueName、dwValue'禁用受限站点的保护模式'strKeyPath=“Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4\”strValueName=“2500”dwValue=0ScriptMe。设置DWORDValue HKEY_CURRENT_USER、strKeyPath、strValueName、dwValue消息框“保护模式设置已更新”

只需将上述代码复制粘贴到记事本中,并用.vbs扩展名保存,然后双击它!

现在再次尝试运行自动化脚本

0

在开始使用Internet Explorer和Selenium Webdriver之前,请考虑这两个重要规则。

  • 缩放级别:应设置为默认值(100%)和
  • 安全区域设置:所有设置都应该相同。应根据您的组织权限设置安全设置。

如何设置?

  • 只需转到Internet explorer,手动完成这两项工作。就是这样。没有秘密。
  • 通过你的代码来完成。

方法1:

DesiredCabilities capabilities=DesiredCabilities.internetExplorer();

capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING,true);System.setProperty(“webdriver.ie.driver”,“D:\\IEDriverServer_Win32_2.33.0\\IEDriversServer.exe”);WebDriver驱动程序=新的InternetExplorerDriver(功能);driver.get(baseURl);//确定您的要素并继续测试。。。

这肯定会不显示任何错误,浏览器将打开也将导航到URL。

但是这个不会识别任何元素因此,您无法继续。

为什么?因为我们简单地消除了这个错误,并要求IE打开并获取该URL。然而,只有当浏览器缩放为100%即默认值时,Selenium才会识别元素。所以最后的代码是

方法2稳健、全面的方法:

DesiredCapabilities功能=DesiredCapabilities.internetExplorer();capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING,true);System.setProperty(“webdriver.ie.driver”,“D:\\IEDriverServer_Win32_2.33.0\\IEDriversServer.exe”);WebDriver驱动程序=新的InternetExplorerDriver(功能);driver.get(baseURl);driver.findElement(By.tagName(“html”)).sendKeys(Keys.chord(Keys.CONTROL,“0”));//确定您的要素并继续测试。。。

希望这能有所帮助。如果需要更多信息,请告诉我。

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.