selenium webdriver工作原理:

webdriver是按照server–client的经典设计模式设计的。

  1. server端就是remote server,可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应的操作;
  2. client端简单说来就是我们的测试代码,我们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被测试浏览器,也就是remote server;remote server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

selenium-webdriver执行脚本过程:

  1. 当测试脚本启动浏览器时,selenium-webdriver会首先启动浏览器,如果测试脚本指定了浏览器的profile,则以该profile启动,否则就新启动一个profile,并启动浏览器;
  2. 启动后,selenium-webdriver会将浏览器绑定到特定的端口,绑定完成后,浏览器实例便作为webdriver的remote selever存在;
  3. 客户端创建一个session,在该session中通过http请求向remote server发送restful的请求,remote server解析请求,完成响应的操作并返回response;
  4. 客户端收到response,分析返回值以决定是转到第3步还是结束脚本。

 

selenium-webdriver启动浏览器操作:

  • IE浏览器
public static void main(String[] args) {
        //指定IEDriverServer.exe的位置
        System.setProperty("webdriver.ie.driver","D:\\IEDriverServer.exe");
        //定义驱动对象为IE对象
        WebDriver driver = new InternetExplorerDriver();
        //驱动的网址
        driver.get("http://www.baidu.com/");
        //关闭驱动
        driver.quit();
    }

使用IE浏览器编写自动化测试脚本时,必须下载IEDriverServer.exe,并将IEDriverServer.exe位置配置到path中。

 

  • Firefox浏览器
public static void main(String[] args) {
    //打开指定路径的firefox,firefox文件安装位置
    System.setProperty("webdriver.firefox.bin","D:\\ProgramFiles\\Mozilla Firefox\\firefox.exe");
    //定义驱动对象为firefox对象
    WebDriver driver = new FirefoxDriver();
    //驱动的网址
    driver.get("http://www.baidu.com/");
    //关闭驱动
    driver.quit();
}

使用Firefox浏览器编写自动化测试脚本时,必须下载和浏览器版本对应的geckodriver.exe,并将geckdriver.exe文件放置在firefox.exe文件同文件夹下。0.19.0版本的geckodriver release notes建议使用的版本是selenium3.5以上,Firefox55以上。geckodriver.exe各版本下载

  • Chrome浏览器
public static void main(String[] args){
        //设置chrome浏览器驱动位置以及浏览器位置
        System.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");
        System.setProperty("webdriver.chrome.bin","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
        //定义驱动对象为 ChromeDriver 对象
        WebDriver driver = new ChromeDriver();
        //驱动的网址
        driver.get("http://www.baidu.com/");
        //关闭驱动
        driver.quit();
    }

 

使用Chrome浏览器编写自动化测试脚本时,必须下载和浏览器版本对应的ChromeDriver.exe,并将ChromeDriver.exe放置在chrome.exe文件同文件夹下【即默认位置,无需再指定驱动位置】。各版本chromedriver下载,chrome与chromedriver版本对应表见博客