码迷,mamicode.com
首页 > 其他好文 > 详细

Selenium系列之--07 操作远程浏览器

时间:2019-03-12 21:08:20      阅读:376      评论:0      收藏:0      [点我收藏+]

标签:框架   ==   调用   ip地址   nqa   imp   mic   rup   官方下载   

Selenium做远程控制,可以通过如下两种方式

a.  客户机启Selenium Standalone Server 作为远程的服务,服务端通过RemoteWebDriver类调用客户机;

b.  通过Selenium Grid 实现分布式执行测试;

一、环境准备

1. 安装JDK(jdk1.8.0_101);
2. 下载安装firefox,chrome浏览器 ;
3. 下载selenium-server-standalone.jar (官方下载地址);
4. 下载InternetExplorerDriver,ChromeDriver,geckodriver(selenium3.0以及之后的版本支持的firefox driver)

二、RemoteWebDriver

Selenium框架的远程控制主要是通过RemoteWebDriver这个类来实现的。

本例中【测试代码放在服务器上,执行代码的机器为客户机】

技术图片

客户机操作

2.1. 首先配置JDK,并配置环境变量,增加放WebDriver文件的地址(即将相应的WebDriver文件夹配置到环境变量的path中)

2.2. 启动独立测试jar包(注意JAR包的版本号)

java -jar E:\Selenium\selenium-server-standalone-2.46.0.jar

技术图片

服务端操作

2.3. 验证客户端响应是否正常。在浏览器中输入地址:http://客户机IP地址:4444/wd/hub/ ,显示如下页面。

技术图片

2.4. 写测试代码,通过RemoteWebDriver调用客户机

import java.net.MalformedURLException;
import java.net.URL;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class RemoteIEBrowser {
    public static void main(String[] args) throws MalformedURLException, InterruptedException {
        // RemoteWebDriver的基本使用

        //第一个参数:表示服务器的地址。第二个参数:表示预期的执行对象,其他的浏览器都可以以此类推
        WebDriver driver = new RemoteWebDriver(new URL("http://10.10.12.162:4444/wd/hub/"), DesiredCapabilities.internetExplorer());
        driver.manage().window().maximize();
        driver.get("http://www.baidu.com");
        Thread.sleep(2000);
        JavascriptExecutor js = (JavascriptExecutor)driver;
        js.executeScript("alert(‘我现在在服务器‘)");
        Thread.sleep(2000);
        driver.quit();
   }
}

2.5. 执行脚本。执行过程中可以看到客户端的浏览器被调用,同时cmd窗口中打印出相关的运行信息,如下 

技术图片

三、Selenium GRID

Selenium Grid 用于解决分布式执行UI测试的痛点,Selenium2之后Selenium Grid被集成到了 Selenium Server 中,即包含在 selenium-server-standalone-x-x-x.jar 包中,其结构图如下所示:

 技术图片

Selenium Grid实际它是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成。Hub用来管理各个代理节点的注册信息和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令转发给代理节点来执行。

  • 3.1. 启动HUB,脚本如下,

  • java -jar selenium-server-standalone-2.46.0.jar -role hub -maxSession 10 -port 4444
     
    -role hub :启动的是HUB,
    -maxSession :最大会话数量
    -prot:指定端口
  • 技术图片
  • 3.2. 测试HUB是否启动成功
  • 技术图片
  • 3.3. 启动NODE节点
  • java -Dwebdriver.IE.driver=E:\Selenium\IEDriverServer.exe -jar E:\Selenium\selenium-server-standalone-2.46.0.jar -role node -port 6666 -hub http://10.10.12.161:4444/grid/register -browser browserName=IE

    -role node :启动的是node节点 -hub :hub 的地址及端口号 -Dwebdriver.chrome.driver:驱动类型 -maxSession :最大会话数量 -browserName:浏览器名称 -注意,有些参数如果不必要时,是可以不用写的,比如platform是系统.
  • 3.4.hub端浏览器刷新页面http://localhost:4444/grid/console,这里也可以看见node节点的情况.
  • 技术图片
  • 3.5.测试NODE是否启动成功,也是通过RemoteWebDriver对象. 代码如2.4
  • 
    

    public static WebDriver getRemoteIEDriver(String ffUrl) {
    try {
    DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
    URL urlInstance = new URL(ffUrl); //指定URL
    WebDriver driver = new RemoteWebDriver(urlInstance, capabilities); //使用RemoteWebDriver初始化
    logger.info("Firefox 浏览器启动完成!");
    return driver;
    } catch (Exception e) {
    logger.error("Firefox 浏览器启动失败!");
    logger.error("===============>" + e.getMessage().toString());
    e.printStackTrace();
    return null;
    }
    }

     

    public class RemoteIEBrowser {
    
        public static void main(String[] args) throws MalformedURLException, InterruptedException {
            // RemoteWebDriver的基本使用
    
            //第一个参数:表示服务器的地址。第二个参数:表示预期的执行对象,其他的浏览器都可以以此类推
            WebDriver driver = getRemoteIEDriver("http://10.10.12.162:6666/wd/hub/");
            driver.manage().window().maximize();
            driver.get("http://www.baidu.com");
            Thread.sleep(2000);
            JavascriptExecutor js = (JavascriptExecutor)driver;
            js.executeScript("alert(‘我现在在服务器‘)");
            Thread.sleep(2000);
            driver.quit();
       }
    
    }

Selenium系列之--07 操作远程浏览器

标签:框架   ==   调用   ip地址   nqa   imp   mic   rup   官方下载   

原文地址:https://www.cnblogs.com/liuyitan/p/10516615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!