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. 【Maven】使用Maven构建多模块项目

    Maven多模块项目 Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理.尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定 ...

  2. (Python)序列

    本节将学习一些循环序列的方法已经序列的大小比较规则 1.循环序列的方法 如果我们想同时循环打印一个列表的index和value,我们可以用enumerate(list) 函数 >>> ...

  3. 基本套接字编程(3) -- select篇

    1. I/O复用 我们学习了I/o复用的基本知识,了解到目前支持I/O复用的系统调用有select.pselect.poll.epoll.而epoll技术以其独特的优势被越来越多的应用到各大企业服务器 ...

  4. 并查集+关系的传递(poj 1182)

    题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...

  5. JAVA动态加载JAR包执行程序

    入口代码 import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.ne ...

  6. Java入门1day

    Java安装及环境变量配置 1.安装 2.环境变量配置 1) 右击"计算机"-->属性(R)-->高级系统设置-->高级-->环境变量 2) 系统变量(或用 ...

  7. C语言和Lua的交互

    //test.c #include <stdio.h> #include "lua.h" #include "lualib.h" #include ...

  8. (转)ASP.NET Mvc 2.0 - 1. Areas的创建与执行

    转自:http://www.cnblogs.com/terrysun/archive/2010/04/13/1711218.html ASP.NET Mvc 2.0 - 1. Areas的创建与执行 ...

  9. python基础整理笔记(一)

    一. 编码 1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII). # -*- coding: utf-8 -*- print 'hel ...

  10. Windows Phone 8.1商店启动协议

    最近开发wp8.1已经两个月了,感觉坑不少,原来8时代的商店api多明了,微软不给封装就算了,至少你要在msdn上明显的地方标注下啊...................顺便在吐槽下bing,找了一个 ...