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 ...
随机推荐
- CentOS7(64) yum安装、配置PostgreSQL 11
一.安装postgresql11 1.Install the repository RPM: 添加RPM yum install https://download.postgresql.org/pub ...
- 清空Sql server日志
日志文件时间长了很大很讨厌,这样清空 1.分离数据库 2.将原数据库的log文件改名 3.附加数据库,在log文件中会显示没有发现,点击删除按钮 4.确定即可
- Ubuntu 12.04 LTS 查看网关地址方法汇总
来源:http://blog.csdn.net/duyiwuer2009/article/details/26263855 1. ip route show $ ip route show defau ...
- 一个tomcat下部署不同端口多个应用
通过配置tmcat的server.xml来实现多端口多应用: <?xml version='1.0' encoding='utf-8'?> <Server port="80 ...
- Best Practices and Recommendations for RAC databases with SGA size over 100GB (文档 ID 1619155.1)
Best Practices and Recommendations for RAC databases with SGA size over 100GB (文档 ID 1619155.1) APPL ...
- Redis主从+读写分离中可以在从机读取到过期数据
参考链接: https://mp.weixin.qq.com/s?__biz=MzIyNzUwMjM2MA==&mid=2247483696&idx=1&sn=c69e364b ...
- MyBatis中使用#和$书写占位符有什么区别?
#将传入的数据都当成一个字符串,会对传入的数据自动加上引号:$将传入的数据直接显示生成在SQL中.注意:使用$占位符可能会导致SQL注射攻击,能用#的地方就不要使用$,写order by子句的时候应该 ...
- keepalive配置mysql自动故障转移
keepalive配置mysql自动故障转移 原创 2016年02月29日 02:16:52 2640 本文先配置了一个双master环境,互为主从,然后通过Keepalive配置了一个虚拟IP,客户 ...
- VMware12 安装 Mac OS 10.12 步骤及设置优化教程
最近公司要开发苹果的ARKit应用,但是项目组穷啊,只有美工用着一台苹果本本,所以肯定不能老用他的电脑,效率低还老打扰他.所以我就想着用虚拟机整,毕竟玩了N年的虚拟机了,应该是没啥问题的.所以就开始各 ...
- json文件转换成excel
1.环境 python2.7 2.库 xlwt.demjson.json 3.code # -*- coding: utf-8 -*- import xlwt,demjson,json if __na ...