摘:http://www.cnblogs.com/dream0577/archive/2012/10/07/2714579.html

/**
       用IE驱动,1.先到官网下载IEDriverServer.exe,2.在代码设置属性 3.在代码设置忽略IE保护模式,4.import org.openqa.selenium.remote.DesiredCapabilities;
       */
       System.setProperty("webdriver.ie.driver", "F:\\selenium\\workspace\\fj10086\\IEDriverServer.exe");
       DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
       ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
       driver = new InternetExplorerDriver(ieCapabilities);

Selenium WebDriver使用IE浏览器

前文写到了WebDriver和JUnit的基本使用,是以Firefox为例来写的,而当我使用IE浏览器Driver来使用WebDriver时,遇到了一些问题,故记录如下。

如下的Java代码是打开IE浏览器,然后在Google中搜索“smilejay”关键字。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.selenium.test;
 
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
 
public class TempGoogle {
public static void main(String[] args) {
final String sUrl = "http://www.google.com.hk/";
System.setProperty("webdriver.ie.driver","C:\\Users\\yren9\\workspace\\selenium\\IEDriverServer.exe");
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver oWebDriver = new InternetExplorerDriver(ieCapabilities);
oWebDriver.get(sUrl);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Use name locator to identify the search input field.
WebElement oSearchInputElem = oWebDriver.findElement(By.name("q"));
oSearchInputElem.sendKeys("smilejay");
WebElement oGoogleSearchBtn = oWebDriver.findElement(By.xpath("//input[@name='btnK']"));
oGoogleSearchBtn.click();
 
try {
Thread.sleep(5000);
}
catch(InterruptedException ex) {
System.out.println(ex.getMessage());
}
 
oWebDriver.close();
}
}

上面的代运行行是没有错误的,不过,类似的程序,如果没有写的很好,或IE浏览器环境没设置好,在Eclipse中可能会遇到如下的一些错误提示。
1. 需要设置IE的Driver到“webdriver.ie.driver”变量中,否则可能遇到报错信息:

1
2
3
The path to the driver executable must be set by the webdriver.ie.driver system property; for more information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://code.google.com/p/selenium/downloads/list
2012-9-2 16:09:02 org.openqa.selenium.ie.InternetExplorerDriverServer initializeLib
警告: This method of starting the IE driver is deprecated and will be removed in selenium 2.26. Please download the IEDriverServer.exe from http://code.google.com/p/selenium/downloads/list and ensure that it is in your PATH.

更具提示,需要添加IEDriverServer.exe(从Selenium官网可下载的),并用如下的代码进行设置。
System.setProperty(“webdriver.ie.driver”,”C:\\Users\\yren9\\workspace\\selenium\\IEDriverServer.exe”);

2. 如果IE浏览器设置安全性较高,在“Internet Options”中都不要选择“Enable Protected Mode”(保护模式),否则可能遇到如下的错误提示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Started InternetExplorerDriver server (64-bit)
2.25.2.0
Listening on port 40961
Exception in thread "main" org.openqa.selenium.WebDriverException: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.18 seconds
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 22:18:01'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_29'
Driver info: driver.version: InternetExplorerDriver
Session ID: 01e30b64-e403-440c-bed8-4859ef2128f9
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:498)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:182)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:167)
at org.openqa.selenium.ie.InternetExplorerDriver.startSession(InternetExplorerDriver.java:133)
at org.openqa.selenium.ie.InternetExplorerDriver.setup(InternetExplorerDriver.java:106)
at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:52)
at com.selenium.test.TempGoogle.main(TempGoogle.java:15)

解决方法有两种,一种是修改掉IE的设置,不要在任何情况下使用保护模式(protected mode),另一种即是前面代码中如下片段在运行时设置IE的Capabilities。

1
2
3
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver oWebDriver = new InternetExplorerDriver(ieCapabilities);

3. 即便是我上面已经修改好的代码(解决了1、2两个问题),在Eclipse中也会有如下的一些运行时警告(我的Win7上的IE9有这个问题),社区上有人也反映了这个问题,但是对测试程序运行时的功能没有影响,作为一个warning,而没有啥好的解决方法。

1
2
3
4
5
6
7
Started InternetExplorerDriver server (64-bit)
2.25.2.0
Listening on port 44940
2012-9-2 16:58:19 org.apache.http.impl.client.DefaultRequestDirector tryExecute
信息: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond
2012-9-2 16:58:19 org.apache.http.impl.client.DefaultRequestDirector tryExecute
信息: Retrying request

关于这个的一个讨论话题: https://code.google.com/p/selenium/issues/detail?id=2568

Selenium WebDriver使用IE浏览器的更多相关文章

  1. selenium webdriver启动Chrome浏览器后无法输入网址的解决办法

    通过selenium webdriver启动Chrome浏览器,脚本如下: from selenium import webdriver browser = webdriver.Chrome() br ...

  2. selenium webdriver启动IE浏览器失败的解决办法

    通过selenium webdriver启动IE浏览器失败,报错:selenium.common.exceptions.WebDriverException: Message: Unexpected ...

  3. selenium webdriver 启动三大浏览器Firefox,Chrome,IE

    selenium webdriver 启动三大浏览器Firefox,Chrome,IE 1.安装selenium 在联网的情况下,在Windows命令行(cmd)输入pip install selen ...

  4. selenium webdriver操作各浏览器

    描述 本文主要是针对Chrome 62 , firefox57 ,和IE11 三个版本的操作.相关的driver .可点击以下链接.所有的driver 建议放在浏览器的目录下,本文中所有的driver ...

  5. Selenium WebDriver的多浏览器测试

    1. IE浏览器,需要配合下载IEDriverSever.exe的驱动程序,目前selenium支持IE9以上. (驱动程序下载链接:https://pan.baidu.com/s/1YpaUsIs1 ...

  6. Selenium webdriver 操作chrome 浏览器

    Step1: 下载chromedriver. 下载路径: http://chromedriver.storage.googleapis.com/index.html 选择一个合适的下载即可.我下载的是 ...

  7. Selenium webdriver 操作IE浏览器

    V1.0版本:直接新建WebDriver使用 import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetE ...

  8. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

  9. selenium webdriver python 操作浏览器

    新建driver driver=webdriver.Firefox() driver=webdriver.Ie() driver=webdriver.Chrome()   打开一个链接 driver. ...

随机推荐

  1. nodejs生成UID(唯一标识符)——node-uuid模块

    unique identifier 惟一标识符        -->> uid 在项目开发中我们常需要给某些数据定义一个唯一标识符,便于寻找,关联. node-uuid模块很好的提供了这个 ...

  2. NK3C开发要点

    1.业务逻辑:文档, 2.后端资料 框架:spring + mybatis + maven + Shiro + 数据库(Oracle.SQL Server.MySQL) 分层:nmodel,ndal, ...

  3. UITaleView的基础使用及数据展示操作

    UITableView表视图,是实用的数据展示的基础控件,是继承于UIScrollView,所以也可以滚动.但不同于UIScrollView,UITableView只可以上下滚动,而不能左右滚动. 因 ...

  4. HttpUtility.UrlEncode

  5. 多线程之 Final变量 详解

    原文: http://www.tuicool.com/articles/2Yjmqy 并发编程网:http://ifeve.com/java-memory-model/ 总结: Final 变量在并发 ...

  6. H5测试区别与PC端测试关注点

    除了基本的业务逻辑功能测试之后,H5页面的测试,需要关注以下几点: 1.  通过H5网页(非手机的返回功能)的返回功能可以返回,不会出现无法返回的情况. 2.  横屏竖屏相互切换,能自适应,并且布局不 ...

  7. 从Unity引擎过度到Unreal4引擎(最终版)

    原文地址:http://demo.netfoucs.com/u011707076/article/details/44036839 前言 寒假回家到现在已经有十多天了,这些天回家不是睡就是吃....哎 ...

  8. hdu 2896 字典树解法

    #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> ...

  9. source : not found 原因及解决办法

    解决方案来自网络: debian中shell脚本无法使用source的原因及解决方法 现象: shell脚本中source aaa.sh时提示 source: not found 原因: ls -l ...

  10. 《机器学习实战》学习笔记——第2章 KNN

    一. KNN原理: 1. 有监督的学习 根据已知事例及其类标,对新的实例按照离他最近的K的邻居中出现频率最高的类别进行分类.伪代码如下: 1)计算已知类别数据集中的点与当前点之间的距离 2)按照距离从 ...