目前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分布式执行之一的更多相关文章

  1. Selenium Grid分布式测试入门详解

    本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...

  2. 用docker搭建selenium grid分布式环境实践之路

    最近需要测试zoom视频会议,同时模拟100个人加入会议.经过了解,zoom提供了直接通过url链接加入会议的方式(只能通过chrome浏览器或者FireFox浏览器,因为用的协议是webrtc). ...

  3. 使用docker搭建selenium grid 分布式环境

    本文章只做docker搭建selenium grid 分布式环境步骤说明,对于selenium grid中的参数.流程.原理等不做说明.selenium grid的详细情况可查看官方文档https:/ ...

  4. Selenium Grid分布式测试环境搭建

    Selenium Grid简介 Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成.Hub用来管理各个代理节点的注册信息 ...

  5. 【python+selenium】selenium grid(分布式)

    前言 原文:https://blog.csdn.net/real_tino/article/details/53467406 Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员 ...

  6. 快速搞定selenium grid分布式

    写这篇文章,似乎有点重复造轮子的嫌疑.当看了几篇相关文章后,我还是决定把半年前的半成品给完成了. 以传统的方式部署分布式Selenium Grid集群需要耗费大量时间和机器成本来准备测试环境. Sna ...

  7. Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

    最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...

  8. linux + docker + selenium grid 实现分布式执行selenium脚本

    Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...

  9. 浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_195 "世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的-",这是电影<卡萨布拉卡> ...

随机推荐

  1. python3 enumerate()函数笔记

    d={"A":"a","B":"b","C":"c","D" ...

  2. hdu 6288(二分法加精度处理问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6288 题意:给出a,b,k,n可满足(n^a)*(⌈log2n⌉)^b<=k ,求最大的n值三个 ...

  3. Problem07 处理字符串

    题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用while 语句,条件为输入的字符不为'\n'. import java.util.*; public clas ...

  4. hbase数据库操作

    .实验内容与完成情况:(实验具体步骤和实验截图说明) (一)编程实现以下指定功能,并用 Hadoop 提供的 HBase Shell 命令完成相同任务: () 列出 HBase 所有的表的相关信息,例 ...

  5. MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建

    : 一:安装软件:tomcatZookeeperDubbo+admin 二:工程: 总工程  API    Pom.xml:不用引用任何东西  Provider    Pom.xml:要denpend ...

  6. 自己的spring boot starter

    这篇文章说的更加详细具体:https://www.cnblogs.com/hjwublog/p/10332042.html 在刚开始看spring boot的时候,发现这么多starter,不免觉得好 ...

  7. pat1089. Insert or Merge (25)

    1089. Insert or Merge (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Accor ...

  8. php7.0.24-nts配置步骤

    php-cgi.exe文件运行 php-cgi.exe -b 127.0.0.1:9000 -c D:/myphp2017/php7-nts/php.ini nginx命令 启动 start ngin ...

  9. SEO--HTML meta标签总结

    <!DOCTYPE html> <!-- 使用html5 doctype,不区分大小写--> <html lang="zh-CN"> <h ...

  10. Aspose.Words导出图片 表格 Interop.Word

    先定义一个WORD 模板, 然后替换文本.域 ,定位开始表格 文本和段落 // Specify font formatting Aspose.Words.Font font = builder.Fon ...