Maybe you met these exceptions sometimes:

1. Chrome Driver

The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html

2. Firefox Driver

The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases

After checking the selenium source code, I had found that the rule how they located these drivers in new selenium 3 API:

Invoke the WebDriver

org.openqa.selenium.chrome.ChromeDriver.ChromeDriver()

ChromeDriverService.createDefaultService();

new Builder().usingAnyFreePort().build();

org.openqa.selenium.remote.service.DriverService.Builder.build();

org.openqa.selenium.chrome.ChromeDriverService.Builder.findDefaultExecutable()

org.openqa.selenium.remote.service.DriverService.findExecutable(String, String, String, String)
String defaultPath = CommandLine.find(exeName);

String exePath = System.getProperty(exeProperty, defaultPath);

checkState(exePath != null,

"The path to the driver executable must be set by the %s system property;"

+ " for more information, see %s. "

+ "The latest version can be downloaded from %s",

exeProperty, exeDocs, exeDownload);

public String find(String named) {

File file = new File(named);

if (canExecute(file)) {

return named;

}

if (Platform.getCurrent().is(Platform.WINDOWS)) {

file = new File(named + ".exe");

if (canExecute(file)) {

return named + ".exe";

}

}

addPathFromEnvironment();

if (Platform.getCurrent().is(Platform.MAC)) {

addMacSpecificPath();

}

for (String pathSegment : pathSegmentBuilder.build()) {

for (String ending : ENDINGS) {

file = new File(pathSegment, named + ending);

if (canExecute(file)) {

return file.getAbsolutePath();

}

}

}

return null;

}

1. First option is place the driver file in your current WebDriver or RemoteWebDriver instance,for example:

If you current selenium server path is: /usr/selenium-server-version.jar ,then you must put the driver into this place

/usr and also MUST NOT change the driver’s name .

2. Add the driver into the PATH environment variable, in linux kernel system, you can put it into this place: /etc/paths.

For windows system you can put it in System environment or User environment Path variable .and also MUST NOT change the driver’s name.

3. Using programmatically java Code: System.setProperty(“”,””) here you can change the driver’s name.

Issues: Selenium Server is developed by Java, and using System.getEnv() to find the PATH variable ,so maybe the cache issue ,cannot located it correctly. When you changed the environment Path for chromedriver you need to restart the Java virtual machine again to make the changes affected.

Selenium 3 -how to locate the chromedriver and geckodriver place?的更多相关文章

  1. ubuntu下的python请求库的安装——Selenium,ChromeDriver,GeckoDriver,PhantomJS,aiohttp

    Selenium安装: pip3 install selenium ChromeDriver安装: 在这链接下载对应版本:https://chromedriver.storage.googleapis ...

  2. Python selenium web UI之Chrome 与 Chromedriver对应版本映射表及下载地址和配置(windows, Mac OS)

    浏览器及驱动下载 进行web UI 自动化时,需要安装浏览器驱动webdriver,Chrome浏览器需要安装chromedriver.exe 驱动,Firefox需安装 geckodriver.ex ...

  3. jenkins 构建selenium python (浏览器驱动是chromedriver)的解决方法

    1.在chrome浏览去中输入chrome://version  查看chrome 的安装位置 2.将chromedriver 驱动添加到可执行文件路径中 3.在Jenkins中 的系统设置中-环境变 ...

  4. selenium启动chrome出错处理:Message: 'chromedriver' executable needs to be in PATH

  5. Mac安装chromedriver和geckodriver

    DY@MacBook-Pro bin$brew install chromedriver Error: No available formula with the name "chromed ...

  6. python使用selenium安装chromedriver的问题

    环境 win64位,python3.6, 问题与解决 说来也巧,今天无意中解决了两个多月前的问题,即用selenium调用chrome浏览器报错的问题:起因是在知乎中看到了一篇12306抢票的文章,用 ...

  7. selenium中使用chromedriver备忘

    chromedriver是chrome浏览器的webdriver的一个实现.ChromeDriver是由Chrome开发团队来完成的因而ChromeDriver不包含在selenium包中,需要从Ch ...

  8. selenium使用ChromeDriver

    什么是ChromeDriver? ChromeDriver是Chromium team开发维护的,它是实现WebDriver有线协议的一个单独的服务.ChromeDriver通过chrome的自动代理 ...

  9. use selenium+chromedriver to taobao automatically

    原理 利用chromedriver来驱动chrome进行各种模拟各种行为操作, 然后利用selenium提供的接口来操作chromedriver. 安装ChromeDriver 当然这个的默认前提是你 ...

随机推荐

  1. SQL Server 树查询

    WITH treeAS(SELECT ParentAssetID, AssetID,1 AS x2level,nodename,CAST(nodename AS NVARCHAR(max)) x2na ...

  2. html5新特性之音频、视频

    1.视频 标签video video标签的属性 属性 描述 autoplay 视频就绪后自动播放 preload 视频在页面加载时加载 loop 视频播放完成后循环播放 controls 显示控件 s ...

  3. LeetCode OJ-- Word Ladder II ***@

    https://oj.leetcode.com/problems/word-ladder-ii/ 啊,终于过了 class Solution { public: vector<vector< ...

  4. poj 1080 (LCS变形)

    Human Gene Functions 题意: LCS: 设dp[i][j]为前i,j的最长公共序列长度: dp[i][j] = dp[i-1][j-1]+1;(a[i] == b[j]) dp[i ...

  5. ArcGIS移动开发策略的选择[转]

    智能设备变得越来越普及,从三岁大的小孩到祖父祖母辈都能顺利使用,信息从没像如此这般的容易传递到每个人的手中,开发者们普遍觉得应该慎重考虑下移动开发策略,是web的.混合的.还是native的更好. 这 ...

  6. glRotate函数

    void glRotate( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) API说明:angle为旋转角度,单位为度:x,y,z是旋转轴的 ...

  7. HDFS用户指南

    https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html hdfs的一些特征: 1.hadoop 包含hdfs 很适合分布式存储以及分布式处 ...

  8. SQLSERVER truncate table之后是否会重置表的自增值

    SQLSERVER truncate table之后是否会重置表的自增值 今天清理业务库数据的时候,开发人员说可以使用truncate table把两个表的所有数据清理掉 这两个表都有自增ID,都做了 ...

  9. VS下的Resharper插件报错“Can not resolve symbol”的解决办法

    今天准备写代码的时候,发现代码中大片的红色,就像下面的图片一样.但是编译一下,也可以重新生成,运行也没有问题.于是就看了下svn上是不是有人改了哪里,发现也没有问题.于是又清理了下解决方案,再次生成, ...

  10. 如何把excel数据导入数据库

    这里介绍2种把excel数据导入oracle数据库的方法. 1. 在excel中生成sql语句. 1)在数据列的右侧,第一行的任何位置输入="insert into table(xx,yyy ...