如何提高自动化测试的执行效率 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的主要内容,如果未能解决你的问题,请参考以下文章