使用selenium grid分布式执行之一
目前ui框架会做一个更新,把原有的Jenkins分布式方式换成grid方式,换成grid方式有两个好处,1.grid的资源占用比Jenkins的jnlp占用资源少 2.grid可控制不同浏览器同时跑
看很多网上跑自己的案例都很顺,想直接拿过来用,中间遇到很多问题,发现自己的电脑,启动多个浏览器后,只会执行1个浏览器,读取数据库中的控件,报空指针问题等,类似并发的问题,最开始怀疑testng多线程问题,折腾了一天,发现是因为我们设计模式问题,并发中driver被覆盖了,哎,,,之后并发有遇到很多问题,为了不耽误项目进度,目前不考虑并发了,记录我最开始使用的demo
public class login {
private WebDriver dr;
DesiredCapabilities test;
String baseUrl;
String testExpectedStr;
String requestId;
String domainName = "https://www.rosewholesale.com/";
String getkeys = "ths#^$%^sdaf%T#$%^fasdbhf&U*$%%$^#";
@Parameters({ "browser", "nodeUrl", "webSite" })
@BeforeClass
public void BeforeClass(String browser, String nodeUrl, String webSite) {
baseUrl = webSite;
if (browser.equals("ie")) {
test = DesiredCapabilities.internetExplorer();
} else if (browser.equals("ff")) {
test = DesiredCapabilities.firefox();
} else if (browser.equals("chrome")) {
String url = nodeUrl + "/wd/hub";
URL urlInstance = null;
try {
urlInstance = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
System.out.println("实例化url出错,检查一下url格式是否正确,格式为:http://192.168.40.67:5555");
}
System.out.println(test);
System.out.println("使用的平台进行启动的浏览器");
String platform_name = "win7";
DesiredCapabilities capabilities = new DesiredCapabilities();
if (platform_name.equalsIgnoreCase("win7")) {
capabilities.setPlatform(Platform.VISTA);
}
if (platform_name.equalsIgnoreCase("win8")) {
capabilities.setPlatform(Platform.WIN8);
}
if (platform_name.equalsIgnoreCase("win8_1")) {
capabilities.setPlatform(Platform.WIN8_1);
}
if (platform_name.equalsIgnoreCase("win10")) {
capabilities.setPlatform(Platform.WIN10);
}
if (platform_name.equalsIgnoreCase("linux")) {
capabilities.setPlatform(Platform.LINUX);
}
capabilities.setBrowserName(browser);
capabilities.setVersion(browser);
ChromeOptions options = new ChromeOptions();
options.addArguments("disable-infobars");
if (platform_name.equalsIgnoreCase("linux")) {
options.addArguments(Arrays.asList("--window-position=0,0"));
options.addArguments(Arrays.asList("--window-size=1920,1080"));
} else {
options.addArguments(Arrays.asList("--start-maximized"));
}
capabilities.setCapability("chrome.switches", Arrays.asList("--incognito"));
options.addArguments("--test-type");
options.addArguments("start-maximized");
options.addArguments("chrome.switches", "--disable-extensions");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
try {
dr = new RemoteWebDriver(new URL(url), capabilities);
} catch (MalformedURLException e) {
e.printStackTrace();
}
} else {
System.out.println("browser参数有误,只能为ie、 ff、chrome");
}
dr.get(webSite);
}
@Test
public void signin_wrongemail() {
Pub.checkStatusBrowser();
以下是测试方法
}
以下是xml配置文件,并发方式以tests方式运行,class就是类名,以下包含一个登录一个注册
<suite name="template" parallel="tests" thread-count="5" > <test name="FirstTest" >
<parameter name="browser" value="chrome"/>
<parameter name="nodeUrl" value="http://10.33.6.230:5555"/>
<parameter name="webSite" value="http://login.rosewholesale.com.trunk.s1.egomsl.com/m-users-a-sign.htm"/>
<classes>
<class name="com.globalegrow.login.login">
</class>
</classes>
</test>
<test name="FirstTest2" >
<parameter name="browser" value="chrome"/>
<parameter name="nodeUrl" value="http://10.40.2.113:5555"/>
<parameter name="webSite" value="http://login.rosewholesale.com.trunk.s1.egomsl.com/m-users-a-sign.htm"/>
<classes>
<class name="com.globalegrow.login.registered">
</class>
</classes>
</test>
</suite>
使用selenium grid分布式执行之一的更多相关文章
- Selenium Grid分布式测试入门详解
本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...
- 用docker搭建selenium grid分布式环境实践之路
最近需要测试zoom视频会议,同时模拟100个人加入会议.经过了解,zoom提供了直接通过url链接加入会议的方式(只能通过chrome浏览器或者FireFox浏览器,因为用的协议是webrtc). ...
- 使用docker搭建selenium grid 分布式环境
本文章只做docker搭建selenium grid 分布式环境步骤说明,对于selenium grid中的参数.流程.原理等不做说明.selenium grid的详细情况可查看官方文档https:/ ...
- Selenium Grid分布式测试环境搭建
Selenium Grid简介 Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成.Hub用来管理各个代理节点的注册信息 ...
- 【python+selenium】selenium grid(分布式)
前言 原文:https://blog.csdn.net/real_tino/article/details/53467406 Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员 ...
- 快速搞定selenium grid分布式
写这篇文章,似乎有点重复造轮子的嫌疑.当看了几篇相关文章后,我还是决定把半年前的半成品给完成了. 以传统的方式部署分布式Selenium Grid集群需要耗费大量时间和机器成本来准备测试环境. Sna ...
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...
- linux + docker + selenium grid 实现分布式执行selenium脚本
Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...
- 浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_195 "世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的-",这是电影<卡萨布拉卡> ...
随机推荐
- jupyter notebook自动补全功能实现
Jupyter notebook使用默认的自动补全是关掉的.要打开自动补全,需修改默认配置. 命令行中输入:ipython profile create 以上命令会在~/.ipython/profil ...
- Java学习笔记day03_引用数据类型
1.引用数据类型 步骤: 1. 导包 2. 创建引用类型变量 类型 变量名 = new 类型名(); 3. 使用数据类型的功能 变量名.功能名(); 如Scanner类: import jav ...
- ora-1652
###检查是否有temp 在使用 step 2: 检查是否有事务使用到temp,并且进行删除. SELECT vt.inst_id,vs.sid,vs.serial#,vs.username,vs.o ...
- tcp发送缓冲区学习
https://blog.csdn.net/ysu108/article/details/7764461 Nginx 模块开发书上有内容 陶辉博客也可以
- python csv.reader参数指定
- Hadoop Intro - Configure
Hadoop学习(二) Hadoop配置文件参数详解 Hadoop运行模式分为安全模式和非安全模式,在这里,我将讲述非安全模式下,主要配置文件的重要参数功能及作用,本文所使用的Hadoop版本为2 ...
- Java基础11-数组
1.使用数组步骤: (1)声明数组 int[] a; (2)分配空间 a=new int[5]; (3)赋值 a[0]=1; int类型数组如果没有赋值,默认值为0,String类型数组默认为nul ...
- LeetCode 167.两数之和(C++)
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...
- 13、Selenium+python+API分类总结
Selenium+python+API分类总结 http://selenium-python.readthedocs.org/index.html 分类 方法 方法描述 客户端操作 __init__( ...
- js对象动态赋值
<view class="movies-template"> <template is="movieListTemplate" data=&q ...