无法使用Selenium2(Webdriver)与Java启动IE浏览器
我无法启动IE浏览器来运行我用Java编写的selenium自动化testing。 我正在使用Windows 7和IE 9.以下是我的代码:
请find附件。
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
- 进入工具 – > Internet选项 – >安全
- 将所有区域(Internet,本地Intranet,受信任的站点,受限站点)设置为相同的受保护模式,启用或禁用都无关紧要。
最后,右键点击位于右上angular的齿轮并启用状态栏,将缩放级别设置为100%。 默认的缩放级别现在显示在右下angular。
就像堆栈跟踪说的那样,你需要为IE中的所有区域设置相同的保护模式。 阅读原因: http : //jimevansmusic.blogspot.in/2012/08/youre-doing-it-wrong-protected-mode-and.html
以及如何从相同的链接快速:“在IE中,从工具菜单(或更高版本的工具栏中的齿轮图标),select”互联网选项“。转到安全选项卡。对话框的底部每个区域,您应该看到一个标记为“启用保护模式”的checkbox。对于每个区域,将checkbox的值设置为相同的值(选中或取消选中)
下面的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并提取到你想要的位置并设置绝对path(在我上面的例子中是“D:\ Ripon Al Wasim \ IEDriverServer.exe”)
- 转到
IE->Tools->Internet Options
。 - 转到安全选项卡。
- 启用/禁用所有的保护模式(Internet,本地Intranet,受信任的站点和受限站点)。
不要使用IEDriverServer.exe的绝对path,而应该根据项目使用相对path。
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");
对于NighwatchJS使用:
"ie" : { "desiredCapabilities": { "browserName": "internet explorer", "javascriptEnabled": true, "acceptSslCerts": true, "allowBlockedContent": true, "ignoreProtectedModeSettings": true } },
在开始使用Internet Explorer和Selenium Webdriver之前请考虑这两个重要的规则。
- 缩放级别:应设置为默认(100%)和
- 安全区域设置:应该相同。 安全设置应根据您的组织权限进行设置。
如何设置?
- 只需转到Internet Explorer,手动执行这两项操作。 而已。 没有秘密。
- 通过你的代码来完成。
方法1 :
DesiredCapabilitiesfunction= 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。 然而selenium只会在浏览器缩放比例为100%的情况下识别元素。 默认。 所以最终的代码是
方法2鲁棒而充分的certificate方式 :
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...
希望这可以帮助。 请告诉我是否需要更多信息。