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. c# 集合适配器

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  2. mysql and 和 or 的 优先级和 查询问题

    1. select * from trade where id=1 and cid=1 or pid=2 ; 2. select * from trade where cid=1 or (pid=2 ...

  3. Python模拟C++输出流

    看到一Python例子,挺有意思的,用Python模拟C++的输出流OStream.单纯只是玩. 原理: 利用Python __lshift__左移内建函数<<,调用时将输出内容,如果内容 ...

  4. python基础整理笔记(四)

    一. python 打开文件的方法 1. python中使用open函数打开文件,需要设定的参数包括文件的路径和打开的模式.示例如下: f = open('a.txt', 'r+') 2. f为打开文 ...

  5. hexo框架-next主题-github搭建个人博客

    IT`huhui 的前言录 我在GITHUB的个人站点:http://ithuhui.cn 这里遇到的很多问题都是亲身解决后写的.还有遇到不懂可以邮件M我 在这里要感谢浮生志的博客教程,很多我一开始不 ...

  6. WP8:在Unity中使用OpenXLive

    Unity 4.2正式版开始添加了对Windows 8.Windows Phone 8等其他平台的支持,而且开发者可以免费使用Unity引擎来开发游戏了.而作为Windows Phone和Window ...

  7. ASP.NET WEB API 中的路由调试与执行过程跟踪

    路由调试 RouteDebugger 是调试 ASP.NET MVC 路由的一个好的工具,在ASP.NET WEB API中相应的有 WebApiRouteDebugger ,Nuget安装 Inst ...

  8. Salesforce 快速查看被引入Package的组件

    在 Salesforce Package 生成一个新版本的时候,由于经常需要去检查有哪些新的组件将要被引入 Package 中,这个在有众多组件的情况下检查起来会有点眼花缭乱,为了方便,就想着用 JS ...

  9. property和attribute的区别

    property是指类向外提供的数据区域.而attribute则是描述对象在编译时或运行时属性的,分为固有型和用户自定义型,其中用户自定义型可以利用Reflection在运行期获取.这两者是有本质区别 ...

  10. Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持

    Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺 ...