我无法启动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);
}
}
答案 0 :(得分:127)
需要在所有区域中设置相同的安全级别。为此,请按照以下步骤操作:
最后,通过右键单击位于右上角的齿轮并启用状态栏,将“缩放”级别设置为100%。 默认缩放级别现在显示在右下方。
答案 1 :(得分:18)
正如堆栈跟踪所示,您需要将IE中所有区域的保护模式设置设置为相同。在此处阅读原因:http://jimevansmusic.blogspot.in/2012/08/youre-doing-it-wrong-protected-mode-and.html
以及如何从同一链接快速操作:“在IE中,从”工具“菜单(或更高版本工具栏中的齿轮图标)中选择”Internet选项“。转到”安全“选项卡。对于每个区域的对话框,您应该看到一个标记为“启用保护模式”的复选框。将复选框的值设置为每个区域的选中或取消选中的相同值“
答案 2 :(得分: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”)
答案 3 :(得分:3)
IE->Tools->Internet Options
。答案 4 :(得分:3)
要解决此问题,您必须做两件事:
您需要在目标计算机上设置一个注册表项 驱动程序可以保持与Internet实例的连接 它创建的资源管理器。
更改该计算机上Internet Explorer浏览器的一些设置 (您希望运行自动化的地方)。
1。设置注册表项/条目:
要设置注册表项或条目,您需要打开“注册表编辑器”。
要打开“注册表编辑器”,请按Windows按钮键+ r字母键 这将打开“运行窗口”,然后键入“regedit”并按Enter键。
或按Windows键,然后在开始菜单中输入“regedit” 按回车键。现在,根据您的操作系统类型,是否遵循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”选项并取消选中“启用保护模式”复选框,并将“安全级别”更改为低。
现在选择“本地Intranet”选项并将“安全级别”更改为低。
现在选择“可信站点”选项并将“安全级别”更改为低。
答案 5 :(得分:2)
不是使用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");
答案 6 :(得分:2)
对于NighwatchJS使用:
"ie" : {
"desiredCapabilities": {
"browserName": "internet explorer",
"javascriptEnabled": true,
"acceptSslCerts": true,
"allowBlockedContent": true,
"ignoreProtectedModeSettings": true
}
},
答案 7 :(得分: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扩展名保存并双击即可!
现在尝试再次运行自动化脚本
答案 8 :(得分:0)
方法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);
//Identify your elements and go ahead testing...
这肯定会不显示任何错误,浏览器会打开,并且还会导航到该网址。
但不会识别任何元素,因此您无法继续。
为什么呢?因为我们已经模拟了这个错误,并要求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...
希望这会有所帮助。如果需要进一步的信息,请告诉我。
答案 9 :(得分:0)
想要共享实际的代码,因为仍然很少有人对如何实现它感到困惑。这是针对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();