zoukankan      html  css  js  c++  java
  • Selenium WebDriver使用IE浏览器(转)

    转自:http://smilejay.com/2012/09/selenium-webdriver-with-ie/

    如下的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

  • 相关阅读:
    mac 个人账户环境变量位置
    版本控制工具Git
    xmind导图用例转换为表格用例
    Mysql清空表(truncate)与删除表中数据(delete)的区别
    log4j日志级别及使用规范
    洛谷 P3807 【模板】卢卡斯定理
    jmeter环境配置与java环境配置
    NOI2020乱搞记
    Re:ゼロから始める文化課生活
    阅读书单
  • 原文地址:https://www.cnblogs.com/fatfatdachao/p/3991548.html
Copyright © 2011-2022 走看看