背景:
来到新公司,搭建java selenium环境过程中,遇到原先不在意的坑(采用RemoteWebDriver远程执行用例时,无法启动chrome驱动(无法创建session),从而直观看到无法启动chrome浏览器(注:首先已排除chrome和chromediver对应版本问题)),却成了头痛的梗,为了拔掉这个梗,接下来总结了一下我的实践过程:
过程1:准备环境
windows 10
Jdk8(自行百度下载)
Idea 2019(自行百度下载)
Selenium 3.14.0相关依赖包(见maven部分)
selenium-server-standalone-2.53.0.jar(自行百度下载)
chrome 79.0.3945.88
chromedriver.exe(自行百度下载),且注意与浏览器对应版本
过程2、首先已排除chrome和chromediver对应版本问题
代码:
package main;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.io.File;
import java.io.IOException;
public class runTest_chrome {
public static void main(String[] args) throws IOException {
System.setProperty( "webdriver.chrome.driver","D:\\selenium\\chromedriver.exe");
WebDriver drivers = new ChromeDriver();
drivers.manage().window().maximize();
drivers.get( "http://www.baidu.com" );
}
}
或
public class runTest_chrome {
public static void main(String[] args) throws IOException {
ChromeDriverService service=new ChromeDriverService.Builder().usingDriverExecutable(new File("D:\\selenium\\chromedriver.exe")).usingAnyFreePort().build();
service.start();
WebDriver drivers=new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome());
drivers.manage().window().maximize();
drivers.get( "http://www.baidu.com");
}
}
注:1、D:\\selenium\\chromedriver.exe,此处为驱动存放路径
2、过程1无法达到远程启动浏览器,所以只能在本地运行浏览器执行
过程3:实施RemoteWebDriver远程启动浏览器(前提:过程2确定了不是chrome和chromedriver对应版本问题,在执行此过程操作)
步骤(1)、启动selenium-server
方法1:将chrome对应的chromedriver.exe驱动,存放到系统用户路径下(比如:C:\Users\zouxi路径下),原因:系统默认找系统用户下chrome驱动
java -jar D:\selenium\selenium-server-standalone-2.53.0.jar
方法2:将chrome对应的chromedriver.exe驱动,存放在指定路径下(比如:D:\selenium\chromedriver.exe),并在cmd执行jar包时,引用存放驱动路径即可
Java –jar D:\selenium\selenium-server-standalone -2.53.0.jar -Dwebdriver.chrome.driver=D:\selenium\chromedriver.exe
注:不同版本selenium-server-standalone的jar包,不一定有-Dwebdriver.chrome.driver参数,建议在运行此jar包时,查看下帮助,比如Java –jar D:\selenium\ selenium-server-standalone -2.53.0.jar –h , 此前用selenium-server-standalone -3.14.0.jar运行时就报错,所以此处要稍微注意下。
步骤(2)、验证是否启动驱动:
1、启动selenium-server-standalone后,可以在浏览器中浏览地址http://127.0.0.1:4444/wd/hub,create session 中新建browser session,选择chrome,点击【ok】,创建成功,会弹出一个chrome浏览器页面,反之未启动chrome驱动
2、可到任务管理器中,查看chromediver进程是否存在,存在说明chrome驱动启动成功(建议用第1种方法验证)
注:1、如出现创建session成功,但未启动浏览器,可到任务管理器中,关闭conhost.exe和cmd进程,再按上述方法和验证方式重新执行即可
2、运行上述方法1和方法2时,有可能报端口占用,此时,可到任务管理器中,关闭java相关进程,再按上述方法和验证方式重新执行即可
3、启动selenium-server-standalone jar包时,可自行定义端口号,如需加端口号,在执行语句后面加 –port 端口号,比如:Java –jar D:\selenium\ selenium-server-standalone -2.53.0.jar –port 6666
步骤(3)、代码和执行:
public class runTest_chrome {
public static void main(String[] args) throws IOException {
WebDriver drivers = new RemoteWebDriver(new URL("http://远程ip:端口号/wd/hub"),
DesiredCapabilities.chrome());
drivers.manage().window().maximize();
drivers.get( "http://www.baidu.com" );
}