使用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 "世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的-",这是电影<卡萨布拉卡> ...
随机推荐
- EXCEL 导入SQL SERVER 方法
1.注意:确认是否已安装 AccessDatabaseEngine.exe 2.可视化按提示操作.
- MVC中Cookies的简单读写操作
写入 public static void WriteCookie(string cn, string cv, DateTime Time) { HttpCookie cookie = new Htt ...
- 练习五十六:for循环
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换 方法一: def o ...
- Java学习笔记day08_day09_对象实例化_private_this
1.类与对象 类就是一个模版. 对象的实例化就是根据模版类, 使用new关键字创建实际的对象. 2.类的定义及创建对象 类的定义格式: public class 类名{ //属性(变量) 数据类型 变 ...
- Java多线程之同步集合和并发集合
Java多线程之同步集合和并发集合 不管是同步集合还是并发集合他们都支持线程安全,他们之间主要的区别体现在性能和可扩展性,还有他们如何实现的线程安全. 同步集合类 Hashtable Vector 同 ...
- 在IE8下background-image不显示的解决方法
刚写一个页面,在chrome,FF里调试完后,忽然想起ie来,放到Ie里其它还好了,但是有个背景图片显示不出来. 调试N遍后,只好上stackoverflow去找一下,果然找到了. 最初是这样写的: ...
- UGUI RectTransform 矩形变换
UGUI游戏对象基本都有这个组件. float radius; radius = GetComponent<RectTransform>().sizeDelta.x; radius = ( ...
- Murano Weekly Meeting 2015.08.25
Meeting time: 2015.August.25th 1:00~2:00 Chairperson: Serg Melikyan, PTL from Mirantis Meeting summ ...
- Ubuntu14.04-PXE搭建
什么是PXE? PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从 ...
- .net程序集标示与绑定上下文
之前在实现Autofac扫描自加载程序集实现IOC时候遇到程序集依赖的问题,在网上搜了一下,没有发现中文世界的相关描述.随取google拿了几篇文章,翻译&自己的理解,之后会写一些小demo, ...