无法使用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); } } 

它需要在所有区域设置相同的安全级别。 要做到这一点,请按照下面的步骤:

  1. 打开IE
  2. 进入工具 – > Internet选项 – >安全
  3. 将所有区域(Int​​ernet,本地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”)

  1. 转到IE->Tools->Internet Options
  2. 转到安全选项卡。
  3. 启用/禁用所有的保护模式(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... 

希望这可以帮助。 请告诉我是否需要更多信息。