如何提高自动化测试的执行效率 selenium java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何提高自动化测试的执行效率 selenium java相关的知识,希望对你有一定的参考价值。

参考技术A 1. 环境准备
1.1 Java环境
安装, 配置jdk
1.2 Java IDE
因为Selenium支持Java/C#/Ruby/Python/Perl等,这里选择用Java。到Eclipse官方网站下载Eclipse, 解压
1.3 Selenium
到Selenium官方网站http://seleniumhq.org/download/下载Selenium IDE,Selenium Server, Selenium Client Driver
以上三者之间的关系是:
Selenium IDE可以录制脚本,执行脚本,修改脚本,将录制的脚本导出成其他语言(比如Java)---本篇不讨论
Selenium Server是和Selenium Client结合使用的,Server用来启动浏览器,接受Client端的请求,执行test;
Client端则是向Server端发送请求。

2. 在Eclipse中编辑并运行test
2.1 新建一个Java project: File-New-Java Project
2.2 在上一步建好的项目名称上点鼠标右键, 点击Build Path-Add External Archives...,将下载的selenium-java-2.21.0.jar(client)和selenium-server-standalone- 2.21.0.jar(server)加进来

2.3 启动selenium server.进入cmd,运行 "java -jar selenium-server-standalone-2.21.0.jar" --保证能找到改jar包。信息如下:

[java] view plaincopy
信息: Launching a standalone server
22:16:21.484 INFO - Java: Sun Microsystems Inc. 17.1-b03
22:16:21.500 INFO - OS: Windows XP 5.1 x86
22:16:21.515 INFO - v2.21.0, with Core v2.21.0. Built from revision 16552
22:16:21.859 INFO - RemoteWebDriver instances should connect to: http://127.0.0.
1:4444/wd/hub
22:16:21.875 INFO - Version Jetty/5.1.x
22:16:21.875 INFO - Started HttpContext[/selenium-server/driver,/selenium-server
/driver]
22:16:21.875 INFO - Started HttpContext[/selenium-server,/selenium-server]
22:16:21.875 INFO - Started HttpContext[/,/]
22:16:22.062 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@5d173
22:16:22.062 INFO - Started HttpContext[/wd,/wd]
22:16:22.093 INFO - Started SocketListener on 0.0.0.0:4444
22:16:22.093 INFO - Started org.openqa.jetty.jetty.Server@32fb4f
[java] view plain copy
信息: Launching a standalone server
22:16:21.484 INFO - Java: Sun Microsystems Inc. 17.1-b03
22:16:21.500 INFO - OS: Windows XP 5.1 x86
22:16:21.515 INFO - v2.21.0, with Core v2.21.0. Built from revision 16552
22:16:21.859 INFO - RemoteWebDriver instances should connect to: http://127.0.0.
1:4444/wd/hub
22:16:21.875 INFO - Version Jetty/5.1.x
22:16:21.875 INFO - Started HttpContext[/selenium-server/driver,/selenium-server
/driver]
22:16:21.875 INFO - Started HttpContext[/selenium-server,/selenium-server]
22:16:21.875 INFO - Started HttpContext[/,/]
22:16:22.062 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@5d173
22:16:22.062 INFO - Started HttpContext[/wd,/wd]
22:16:22.093 INFO - Started SocketListener on 0.0.0.0:4444
22:16:22.093 INFO - Started org.openqa.jetty.jetty.Server@32fb4f

2.4 代码测试

[java] view plaincopyprint?
import com.thoughtworks.selenium.DefaultSelenium;

public class SeleniumDemo01

public static void main(String[] args)

String host = "localhost";
int port = 4444;
String url = "http://www.baidu.com/";
String browserType = "*firefox";

String keyWordsLocator = "document.getElementById('kw')";
String search = "document.getElementById('su')";
DefaultSelenium selenium = new DefaultSelenium(host,port,browserType,url);
selenium.start();
selenium.open(url);
selenium.type(keyWordsLocator,"java selenium");
selenium.click(search);
selenium.waitForPageToLoad("50000");
selenium.stop();



运行结果:
1.firefox浏览器期待
2.打开百度主页
3.在搜索框中键入了"java selenium"
4.点击"百度一下"按钮
5.等等页面加载50s
6.关闭浏览器

selenium Grid使用

1.1 Selenium Grid简介

Selenium Grid组件专门用于远程分布式测试或并发测试,通过并发执行测试用例的方式可以提高测试用例的执行速度和效率,解决界面自动化测试执行速度过慢的问题。

Selenium Grid使用Hub和Node模式,一天计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多个Node机执行,并收集多台Node机执行结果的报告,汇总后提交一份总的测试报告,如图:

Hub:

l  在分布式测试模式中,只能存在一个Hub节点;

l  负责管理测试脚本,并负责发送节本给其他Node节点;

l  所有的Node节点计算机必须先在作为Hub的计算机中进行注册,注册成功后在和Hub计算机通信,Node节点计算机会告知Hub的信息,如:浏览器相关信息、操作系统

l  Hub计算机可以给自己分配执行测试用例的任务

l  Hub计算机分发的测试用例任务会在各个Node节点执行

Node:

l  在分布式测试模式中,可以有至少一个Node节点

l  Node节点会打开本地的浏览器完成测试任务并返回测试结果给Hub

l  Node节点的操作系统和浏览器版本无需和hub保持一致

l  在Node节点上可以同时打开多个浏览器并执行测试任务

1.2 分布式环境搭建

Selenium Grid是基于java开发的jar包,必须要有jdk环境才能运行

去官网(https://www.seleniumhq.org/download/)下载Selenium Standalone Server

 

1.3 Hub启动参数说明

参数名称

参数含义

-role hub

启动hub服务,等待node注册

-hubConfig [jsonfile]

设置一个符合grid规则的json格式的hub配置文件,详细配置见:

https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json

-port

指定hub端口

-host

指定bub机的ip或者host值,一般不需要设置

-newSessionWaitTimeout

执行一个新的session等待执行的间隔时间,即一个代理节点上前后两个测试间的时间间隔,单位毫秒,默认为-1,即没有超时

-browserTimeout

浏览器无响应的超时时间

 

1.4 Node启动参数说明

参数名称

参数含义

-role [node|wd|rc]

为node时,表示注册的RC可以支持所有版本的selenium

为wb时,不支持selenium1,也可以写成webdriver

为rc时,仅支持selenium1

-hub hub_url

注册到hub,hub_url表示hub的访问地址,默认值为:http://hubip:4444/grid/register

-port

节点计算机提供远程连接的端口号,也是hub的监听端口

-timeout

Node连接hub的超时时间

-maxSession

在一个node节点中,允许最多打开多少个浏览窗口

-browser

设定node计算机允许使用的浏览器信息,如:

browserName=firefox,version=60.0,firefox_binary=d:/firefox60/firefox,maxInstances=3,platform=WINDOWS

maxInstances:最多允许同事启动的浏览器窗口数

-browserTimeout

浏览器无响应的超时时间

-registerCycle

Node间隔多少毫秒去连接hub,以便hub重启时,不需要重启node

-nodeTimeout

客户端超时时间

-nodeConfig [jsonfile]

符合grid规则的json格式的node配置文件,详见:

https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json

 

1.5 远程调用Firefox

1.5.1 条件准备

准备两台计算机A和B,A做Hub节点,B做Node

两台计算机都要准备selenium Grid。

1.5.2 操作步骤

 

1、 在A机cmd窗口,进入selenium-server-standalone-3.141.59.jar包安装目录,执行如下语句:

java -jar selenium-server-standalone-3.141.59.jar -role hub

执行结果如下:

 

2、 在A机浏览器输入:http://localhost:4444/grid/console,出现如下界面则表示hub启动成功

 

3、 在B机cmd窗口输入如下命令启动Node:

java -Dwebdriver.gecko.driver=D:\geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://192.168.1.2:4444/grid/register -port 6666 -maxSession 5 -browser browserName="firefox",maxInstances=5

192.168.1.2:4444为A机HubIP及端口

1.6 远程调用Chrome

1.6.1 条件准备

准备两台计算机A和B,A做Hub节点,B做Node

两台计算机都要准备selenium Grid。

1.6.2 操作步骤

 

1、 在A机cmd窗口,进入selenium-server-standalone-3.141.59.jar包安装目录,执行如下语句:

java -jar selenium-server-standalone-3.141.59.jar -role hub

执行结果如下:

 

2、 在A机浏览器输入:http://localhost:4444/grid/console,出现如下界面则表示hub启动成功

 

3、 在B机cmd窗口输入如下命令启动Node:

java -Dwebdriver.gecko.driver=D:\geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://192.168.1.2:4444/grid/register -port 6666 -maxSession 5 -browser browserName="firefox",maxInstances=5

192.168.1.2:4444为A机HubIP及端口

1.7 远程调用IE

1.7.1 条件准备

准备两台计算机A和B,A做Hub节点,B做Node

两台计算机都要准备selenium Grid。

1.7.2 操作步骤

 

1、 在A机cmd窗口,进入selenium-server-standalone-3.141.59.jar包安装目录,执行如下语句:

java -jar selenium-server-standalone-3.141.59.jar -role hub

执行结果如下:

 

2、 在A机浏览器输入:http://localhost:4444/grid/console,出现如下界面则表示hub启动成功

 

3、 在B机cmd窗口输入如下命令启动Node:

java -Dwebdriver.gecko.driver=D:\geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://192.168.1.2:4444/grid/register -port 6666 -maxSession 5 -browser browserName="firefox",maxInstances=5

192.168.1.2:4444为A机HubIP及端口

以上是关于如何提高自动化测试的执行效率 selenium java的主要内容,如果未能解决你的问题,请参考以下文章

Python-selenium-自动化测试模型

Appium Grid并发测试

Selenium3 + Python3自动化测试系列十——调用JavaScript代码

Selenium Grid的使用(分布式测试)

Selenium简介

selenium初次接触-1