1.搭建服务端集群
使用selenium提供的服务端独立jar包 ;服务端、客户端都是运行于java7环境。
1.1启动hub
java -jar selenium-server-standalone-2.48.2.jar -role hub -port 802
1.2启动node
IEDriverServer.exe和chromedriver.exe要下载到每个node节点,用于启动IE、chrome。
java -jar selenium-server-standalone-2.48.2.jar -role node -hub "http://127.0.0.1:802/grid/register" -port 803 -Dwebdriver.ie.driver="D:\autoTest\IEDriverServer.exe" -Dwebdriver.chrome.driver="D:\autoTest\chromedriver.exe" -Dwebdriver.firefox.bin="E:\Program Files\Mozilla Firefox\firefox.exe" -browser "browserName=internet explorer,maxInstances=5,version=11,platform=WINDOWS" -browser "browserName=chrome,maxInstances=2,version=47,platform=WINDOWS" -browser "browserName=firefox,maxInstances=3,version=38,platform=WINDOWS"
2.设置node节点的注册表
2.1找到节点HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\ (32位windows)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\ (64位windows)
2.2在项FEATURE_BFCACHE里新建一个DWORD值:
名称为iexplore.exe,数值为0
2.3在项FEATURE_HTTP_USERNAME_PASSWORD_DISABLE里新建一个DWORD值:
名称为iexplore.exe,数值为0
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE]
"iexplore.exe"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE]
"iexplore.exe"=dword:00000000
3.使用java代码调用selenium grid进行web自动化测试
把selenium提供的客户端jar包都添加进build path。(selenium为客户端提供了一个zip,里面有超过50个jar包)
package selenium;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Tester {
public static void main(String[] args) throws MalformedURLException {
DesiredCapabilities capability = DesiredCapabilities.internetExplorer();// 指定调用IE进行测试
capability
.setCapability(
InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
true);// 避免IE安全设置里,各个域的安全级别不一致导致的错误
// 连接到selenium hub,远程启动浏览器
WebDriver driver = new RemoteWebDriver(new URL(
"http://localhost:802/wd/hub"), capability);
driver.manage().window().maximize();
driver.get("http://www.baidu.com");
// 输入查询条件
WebElement query = driver.findElement(By.id("kw"));
query.sendKeys("auto test");
query.submit();
// 等待返回结果
WebDriverWait wait = new WebDriverWait(driver, 15, 100);
By byResult = By.xpath("//*[@class='nums']");
wait.until(ExpectedConditions.visibilityOfElementLocated(byResult));
// 输出结果
WebElement elResult = driver.findElement(byResult);
System.out.println(elResult.getText());
// 关闭driver
driver.quit();
}
}