selenium(java)之RemoteWebDriver的基本使用

来源:互联网 发布:u盘 知乎 编辑:程序博客网 时间:2024/06/07 21:57

selenium提供了RemoteWebDriver,可以使执行测试的机器和发送测试命令的机器独立开来,比如A机器,是写测试代码的机器,可以发送测试命令给服务器,可以理解为客户端;B机器是执行测试代码的机器,可以理解为服务器端,A发送命令给B,然后再B上面执行测试,并返回结果给A。

环境准备


通过上面的描述,我们需要两台机器,一台作为客户端,一台作为服务器端。 
服务器端配置 
前提是服务器已经安装jdk,我这里安装的是1.8。好像selenium-server3.0.0需要依赖java8(这个没有验证过),如果大家在启动server的过程中报错,可以尝试将jdk修改为1.8的试一下。 
(1)下载安装firefox,chrome浏览器 
(2)下载selenium-server-standalone.jar 
官方下载地址:http://docs.seleniumhq.org/download/ 
我的百度云地址(selenium-server-standalone 3.0.0.jar):http://pan.baidu.com/s/1dEQ2tiD 
(3)下载chromedriver,geckodriver(selenium3.0以及之后的版本支持的firefox driver) 
chromedriver官方下载地址:http://docs.seleniumhq.org/download/ 
我的百度云地址(chromedriver 2.24):http://pan.baidu.com/s/1eSyWjp4 
geckodriver官方下载地址:http://www.cnblogs.com/nbkhic/p/5779453.html 
我的百度云下载地址(geckodriver):http://pan.baidu.com/s/1slTHQH3 
说明:由于我下载的serverselenium-server-standalone.jar是3.0.0版本的,所以这里需要下载geckodriver,如果你本机的server不是3.0.0以及之后的版本,则不用单独下载firefox driver(geckodriver),可以直接使用selenium客户端的老版本的firefoxdriver。关于firefox driver和selenium-server-standalone.jar的版本问题,可以参见我的另外一篇博客“【问题】selenium-server-standalone和webdriver版本不对应的问题” 
(4)在服务器端启动服务并配置driver 
启动server的命令:java -jar D:\FilesToDriver\selenium-server-standalone-3.0.0.jar 
将driver放置到系统变量下,一般放置到“C:\Windows\System32”下 
其实这里可以创建一个批处理文件(start.bat),每次启动的时候就不用手工在cmd中输入命令,可以双击一键启动。 
启动之后的cmd显示如下: 



注意:服务器的地址如下:http://你的host地址:4444/wd/hub/,记录,后面编写客户端代码的时候需要使用 

客户端配置 
eclipse+selenium2.53.1+jdk1.8

package seleniumdemo;

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 EDemo2 {

public static void main(String[] args) throws MalformedURLException, InterruptedException {

// RemoteWebDriver的基本使用

//第一个参数:表示服务器的地址。第二个参数:表示预期的执行对象,其他的浏览器都可以以此类推

WebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub/"), DesiredCapabilities.chrome());

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(); }}

执行脚本

其实脚本是在服务器端执行的,客户端用于发送命令。执行过程中可以看到服务器端的chrome别调用,

同时cmd打印出相关的运行信息,如下 




原创粉丝点击