无法使用带有Java的Selenium2(Webdriver)启动IE浏览器

无法使用带有Java的Selenium2(Webdriver)启动IE浏览器,java,internet-explorer,selenium-webdriver,Java,Internet Explorer,Selenium Webdriver,我无法启动IE浏览器来运行用Java编写的selenium自动化测试。我正在使用Windows7和IE9。下面是我的代码: 请找到附件 public class GoogleNews { private WebDriver driver; private String baseUrl; private StringBuffer verificationErrors = new StringBuffer(); ArrayList al = new ArrayList

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

请找到附件

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

正如堆栈跟踪所说,您需要将IE中所有区域的保护模式设置设置为相同。请阅读此处的原因:


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

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

  • 开放式IE
  • 转到工具->互联网选项->安全
  • 将所有区域(Internet、本地intranet、受信任的站点、受限制的站点)设置为相同的保护模式,启用或禁用都不重要
  • 最后,通过右键单击位于右上角的档位并启用状态栏,将缩放级别设置为100%。
    默认的缩放级别现在显示在右下角。

    以下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”)

    与其为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");          
    
  • 转到
    IE->Tools->Internet选项
  • 转到“安全”选项卡
  • 为所有站点(Internet、本地Intranet、受信任站点和受限制站点)启用/禁用受保护模式
  • 对于NighwatCHJ,请使用:

    "ie" : {
      "desiredCapabilities": {
        "browserName": "internet explorer",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "allowBlockedContent": true,
        "ignoreProtectedModeSettings": true
      }
    },
    
    在开始使用Internet Explorer和SeleWebRead之前,请考虑这两个重要规则。
    • 缩放级别:应设置为默认值(100%),并且
    • 安全区域设置:应与所有设置相同。安全设置应根据您的组织权限进行设置
    如何设置?
    • 只需转到Internet explorer,手动完成这两项工作。就这样。没有秘密
    • 通过你的代码来做
    方法1

    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...
    
    DesiredCapabilities=DesiredCapabilities.internetExplorer()

    这将明确地不显示任何错误,浏览器将打开并导航到URL

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

    为什么?因为我们简单地抑制了错误,并要求IE打开并获取该URL。但是,只有当浏览器缩放为100%IE.default时,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...
    

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

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

  • 您需要在目标计算机上设置注册表项,以便 驱动程序可以保持与Internet实例的连接 它创建的浏览器

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

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

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

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

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

    Windows 32位: 转到此位置-“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl”并检查“FEATURE\U BFCACHE”键

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

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

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

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

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

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

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

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

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

    • 然后重新启动浏览器

      • 希望共享实际代码,因为很少有人会对如何实现它感到困惑。这是用于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();
        

        我无法在我的系统上手动修改受保护模式设置,因为它们已被禁用。但下面用于更新注册表值的VBA代码段对我起到了作用。(请注意您的组织在修改r时的任何限制。)
        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"