标签:框架 == 调用 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)
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 用于解决分布式执行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:指定端口
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是系统.
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(); } }
标签:框架 == 调用 ip地址 nqa imp mic rup 官方下载
原文地址:https://www.cnblogs.com/liuyitan/p/10516615.html