无法使用带有Java的Selenium2(Webdriver)启动IE浏览器
我无法启动IE浏览器来运行用Java编写的selenium自动化测试。我正在使用Windows7和IE9。下面是我的代码: 请找到附件无法使用带有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
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选项”。转到“安全”选项卡。在每个区域的对话框底部,您应该看到一个标记为“启用保护模式”的复选框。“为每个区域将复选框的值设置为相同的值(选中或未选中)”需要在所有区域中设置相同的安全级别。要执行此操作,请执行以下步骤:
默认的缩放级别现在显示在右下角。以下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选项
"ie" : {
"desiredCapabilities": {
"browserName": "internet explorer",
"javascriptEnabled": true,
"acceptSslCerts": true,
"allowBlockedContent": true,
"ignoreProtectedModeSettings": true
}
},
在开始使用Internet Explorer和SeleWebRead之前,请考虑这两个重要规则。
- 缩放级别:应设置为默认值(100%),并且
- 安全区域设置:应与所有设置相同。安全设置应根据您的组织权限进行设置
- 只需转到Internet explorer,手动完成这两项工作。就这样。没有秘密
- 通过你的代码来做
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...
希望这有帮助。如果需要更多信息,请务必告诉我。要解决此问题,您必须做两件事:
- 要设置注册表项或条目,您需要打开“注册表编辑器”
- 要打开“注册表编辑器”,请按windows按钮键+r字母键 这将打开“运行窗口”,然后键入“regedit”并按enter键
- 或按Windows按钮键并在开始菜单中输入“regedit”,然后 按enter键。现在取决于您的操作系统类型是否遵循32/64位 相应的步骤
- 单击设置按钮并选择“Internet选项”
- 在“Internet选项”窗口中,转到“安全性”选项卡
- 现在选择“Internet”
- 现在单击“应用”按钮,可能会出现一个警告弹出窗口,单击“确定”按钮进行警告,然后单击“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"