Selenium Grid和IE /Firefox各种填坑
使用selenium grid的步骤
1、确保hub和node都安装并且配置好了java jdk.
2、在hub上运行以下命令。
java -jar C:\Software\selenium\selenium-server-standalone-2.40.0.jar -role hub -port 4444
其中,-port 4444是可选的,不指定的话,默认是4444端口
3、在用作Node的电脑上运行以下命令
java -Dwebdriver.chrome.driver="C:\webdrivers\chromedriver.exe" -Dwebdriver.ie.driver="C:\webdrivers\IEDriverServer.exe" -Dwebdriver.gecko.driver="C:\webdrivers\geckodriver.exe" -jar C:\selenium-server\selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.60.66:4444/grid/register -host 192.168.60.61 -port 5566
一口气把各种webdriver的地址都加进去了
问题就来了。
因为我的node电脑有两个物理网卡和两个虚拟网卡,HUB也有两个网卡,一个连外网,一个连内网。
两个物理网卡当中的一张通过网线与Hub相连,并且确定是互联互通的,但是另外一张物理网卡是WIFI,虽然WIFI与HUB在同一路由下,但WIFI与HUB的有线网卡并不是同一个局域网网段。这就导致后来执行测试脚本时各种报错。
后来我重新运行Java -jar命令,并指定了Node的IP地址和端口,如上是完整命令,下面是重点选项。
-host 192.168.60.61 -port 5566
经过这些坑,两台电脑的selenium是能够联通了。
但是有遇到了IE保护模式和ZOOM LEVEL这个破事儿,这个问题,需要改java代码。
改好的java代码在下面。
package com.qa.data;
import java.net.MalformedURLException;
import java.net.URL; import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test; public class ExcelData { @SuppressWarnings("deprecation")
@Test
public void openBrowser() throws MalformedURLException, InterruptedException { DesiredCapabilities cap=DesiredCapabilities.internetExplorer();
cap.setBrowserName("internet explorer"); //以下三句,很多网上的文章都没加,我KAO,不加这三句它们的IE是怎么跑起来的?
cap.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
cap.setCapability("ignoreZoomSetting", true);//忽略IE浏览器的ZOOM LEVEL,不加这句会报错。每次selenium打开ie都是他妈的150%放大倍数,狗日的IE+SELENIUM
cap.setPlatform(Platform.WINDOWS);
URL url=new URL("http://192.168.60.61:5566/wd/hub");
WebDriver driver=new RemoteWebDriver (url,cap);
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
String t=driver.getTitle();
System.out.println(t);
Thread.sleep(3000);
driver.findElement(By.id("kw")).sendKeys("天气");
Thread.sleep(1000);
driver.findElement(By.id("su")).click();
Thread.sleep(3000);
driver.quit();
} }
关于填坑的截图,坑爹啊。

第二张图

Firefox在remote web driver打开的正确方式。
这也是一个坑,以前WebDriver driver=new FirefoxDriver()不管用了,
要使用下面的方法。
不能使用DesiredCapabilities cap=DesiredCapabilities.firefox();
package com.qa.data; import java.net.MalformedURLException;
import java.net.URL; import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test; public class FirefoxTest {
@Test
public void openFirefox() throws MalformedURLException, InterruptedException { /*这段不需要
System.setProperty("webdriver.gecko.driver",
"C:\\webdrivers\\geckodriver.exe");
*/ FirefoxOptions option=new FirefoxOptions();
String binaryPath="C:\\Program Files\\Mozilla Firefox\\firefox.exe";
//注意,是firefox.exe在远程Node电脑的路径,不是gecko.driver
option.setBinary(binaryPath); URL url=new URL("http://192.168.60.61:5566/wd/hub");
WebDriver driver=new RemoteWebDriver (url,option); driver.get("http://www.baidu.com");
driver.manage().window().maximize();
String t=driver.getTitle();
System.out.println(t);
Thread.sleep(3000);
driver.findElement(By.id("kw")).sendKeys("天气");
Thread.sleep(1000);
driver.findElement(By.id("su")).click();
Thread.sleep(3000);
driver.quit();
}
}
Selenium Grid和IE /Firefox各种填坑的更多相关文章
- 学习selenium grid记录
1.找两台Windows系统,一个是A,作为Hub:一个是B,作为Node: 2.在A.B两台电脑分别下载selenium-server-standalone-2.48.0.jar,并放到指定目录 3 ...
- F2eTest和uirecorder自动化测试环境部署填坑记录
坑1:尝试部署的时候只在opennode.bat里面填写了两个浏览器,测试通过后再增加其他浏览器,页面上一直不显示. 填坑:需要清空数据库里的`wd_browsers`和`wd_nodes`表,然后重 ...
- css 填坑常用代码分享
以下是常用的代码收集,没有任何技术含量,只是填坑的积累.转载请注明出处,谢谢. 因为提交比较麻烦,后来转置github:https://github.com/jsfront/src/blob/mast ...
- 搭建selenium grid简单配置
1.使用selenium提供的服务端独立jar包 :服务端.客户端都是运行于java7环境. 2.启动hub: hub配置文件如下: Java -jar selenium-server-standal ...
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...
- Selenium Grid Configuration
Start Hub and Node with Json config 1. Start Hub with json config file title HubWebDriver java -jar ...
- Selenium Grid 运行报错 Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities
Selenium Grid 运行报错 : Exception thrown in Navigator.Start first time ->Error forwarding the new se ...
- selenium Grid(一)
selenium grid Quick Start selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成.hub用来管理各个代理节点的注册 ...
- selenium Grid
Selenium Grid 的机制是启动一个 hub,然后启动多个 Selenium RC 注册到 hub 上, 当测试请求到 hub 时,hub 会将测试分发给 Selenium RC, Selen ...
随机推荐
- 测试开发学习进阶教程 视频&PDF
测试开发学习进阶教程 视频&PDF,7天后失效,更多学习资料加Q群 https://pan.baidu.com/s/196KEo791NeZKyfV_E-36Uw 提取码: 41vu ...
- 2019春招——Vivo大数据开发工程师面经
Vvio总共就一轮技术面+一轮HR面,技术面总体而言,比较宽泛,比较看中基础,面试的全程没有涉及简历上的东西(都准备好跟他扯项目了,感觉是抽取的题库...)具体内容如下: 1.熟悉Hadoop哪些组件 ...
- 饿了么测试专场技术沙龙实况回顾&PPT 下载
PPT下载和视频观看链接 链接:https://pan.baidu.com/s/1dE8uXHZ 密码:6j5z视频直播回顾: http://www.itdks.com/dakashuo/playba ...
- spring框架篇(一)-------spring简介与配置文件使用控制反转事例
spring简介 Spring 是一个开源框架,中文意思就是春天,也许是作者想让自己的这个框架给Java开发人员带来春天吧.其官方网站是 https://spring.io/ ,可以在官方网站下载到完 ...
- C语言数据结构基础学习笔记——B树
2-3树:是一种多路查找树,包含2结点和3结点两种结点,其所有叶子结点都在同一层次. 2结点:包含一个关键字和两个孩子(或没有孩子),其左孩子的值小于该结点,右孩子的值大于该结点. 3结点:包含两个关 ...
- js滚动到指定位置
序言:在网络上百度,关键字:“js div滚动到指定位置”,结果基本上大同小异!各种大神都给我们总结出来了四种滚动到指定位置的办法,可惜再下愚钝,每个都不会用,所以写了一个超级简单的方法来使初学者一看 ...
- resttemlate
package com.xjj; import java.util.List; import java.util.Map; import java.util.stream.Collectors; im ...
- DatetimeHelper,时间帮助类
public static class DateTimeEx { /// <summary> /// 得到中文形式的日期 /// </summary> /// <para ...
- OOP AOP
OOP 一切皆对象,,,对象交互---功能,,,功能叠加---模块,,,模块叠加----系统 AOP 面向切面, 业务逻辑外,添加公共逻辑,增加日志功能,权限控制功能,缓存处理,异常处理,事务,性 ...
- NumPy基础
一.NumPy ndarray (一)生成ndarray 表 数组生成函数 函数 描述(默认数据类型是float64) array 将输入数据(序列型对象)转换为ndarray,若不显示的指定数据类型 ...