56

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

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

public class GoogleNews {
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();
    ArrayList al = new ArrayList();
    @Before
    public void setUp() throws Exception {
        //driver = new FirefoxDriver();
        driver =new InternetExplorerDriver();
        baseUrl = "https://news.google.co.in/";

    }

    @Test
    public void testApple() throws Exception {
        driver.get(baseUrl);
    }
}
4

10 回答 10

149

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

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

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

于 2013-02-19T12:25:13.670 回答
20

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

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

于 2013-02-19T10:42:29.750 回答
12

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

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
File file = new File("D:\\Ripon Al Wasim\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver(capabilities);
driver.get("https://www.google.com/");

下载 IEDriverServer 并将其解压缩到您想要的位置并设置绝对路径(在我上面的示例中它是“D:\Ripon Al Wasim\IEDriverServer.exe”)

于 2013-02-20T04:56:57.243 回答
4

IEDriverServer.exe不要使用绝对路径,最好根据项目使用相对路径。

        DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
        capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
        File fil = new File("iDrivers\\IEDriverServer.exe");
        System.setProperty("webdriver.ie.driver", fil.getAbsolutePath());
        WebDriver driver = new InternetExplorerDriver(capabilities);        
        driver.get("https://www.irctc.co.in");          
于 2015-05-18T10:48:34.403 回答
3
  1. IE->Tools->Internet Options
  2. 转到安全选项卡。
  3. 为所有人启用/禁用保护模式(Internet、本地 Intranet、受信任的站点和受限制的站点。)
于 2015-09-01T10:34:36.200 回答
3

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

InternetExplorerOptions options = new InternetExplorerOptions();
            options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
            options.IgnoreZoomLevel = true;
            driver = new
                InternetExplorerDriver("C:\\Users\\stdd\\Desktop\\SLL\\SLLAutomation" +
                "\\Clysis\\STGSearch\\STGClaSearch\\Driver\\", options);
            driver.Manage().Window.Maximize();
于 2019-05-10T20:33:18.280 回答
2

对于 NightwatchJS 使用:

"ie" : {
  "desiredCapabilities": {
    "browserName": "internet explorer",
    "javascriptEnabled": true,
    "acceptSslCerts": true,
    "allowBlockedContent": true,
    "ignoreProtectedModeSettings": true
  }
},
于 2016-09-05T14:54:42.107 回答
2

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

  1. 您需要在目标计算机上设置一个注册表项,以便驱动程序可以保持与它创建的 Internet Explorer 实例的连接。

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

1. 设置注册表项/条目:

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

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

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

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

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

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

注册表设置

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

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

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

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

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

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

互联网选项

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

保存设置

  • 在此之后重新启动浏览器。
于 2018-04-03T13:40:42.197 回答
1

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

Const HKEY_CURRENT_USER = &H80000001
strComputer = "."

Set ScriptMe=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")

'Disable protected mode for local intranet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for trusted pages'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for internet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for restricted sites'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

msgbox "Protected Mode Settings are updated"

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

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

于 2020-08-23T06:10:20.693 回答
0

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

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

这个怎么设置?

  • 只需转到 Internet Explorer,手动完成这两项工作。而已。没有秘密。
  • 通过您的代码执行此操作。

方法一

DesiredCapabilities 能力 = DesiredCapabilities.internetExplorer();

    capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);

    System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");

    WebDriver driver= new InternetExplorerDriver(capabilities);


    driver.get(baseURl);

    //Identify your elements and go ahead testing...

这绝对不会显示任何错误,并且浏览器将打开并导航到 URL。

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

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

方法 2 稳健且全面的证明方式

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

    capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);

    System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");

    WebDriver driver= new InternetExplorerDriver(capabilities);


    driver.get(baseURl);

    driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,"0"));

    //Identify your elements and go ahead testing...

希望这可以帮助。如果需要更多信息,请告诉我。

于 2016-11-25T09:39:02.963 回答