传送门

# 官网网站
http://docs.seleniumhq.org/download/

# API DOC
http://goo.gl/hohAut # 慕课网教程
http://www.imooc.com/learn/792 # 虫师教程
http://www.cnblogs.com/fnng/p/5854875.html # 火狐浏览器历史版本下载
http://ftp.mozilla.org/pub/firefox/releases # 火狐插件:firepath 非前端人员可能不熟悉css选择器,所以可以使用xpath
https://addons.mozilla.org/zh-CN/firefox/addon/firepath/?src=search # 火狐插件:Selenium IDE 录制
https://addons.mozilla.org/zh-CN/firefox/addon/selenium-ide/?src=search

下载

npm install selenium-webdriver

各大浏览器厂商的官方驱动文件

browser component
Chrome chromedriver(.exe)
Internet Explorer IEDriverServer.exe
Edge MicrosoftWebDriver.msi
Firefox 47+ geckodriver(.exe)
PhantomJS phantomjs(.exe)
Opera operadriver(.exe)
Safari safaridriver

PS: driver的版本 与 浏览器的版本密切相关,请按需下载,比如chromedriver可以通过其中notes.txt查看支持的版本信息

然后,把这些驱动下载,并存放到一个目录中,例如:D:/driver/ ,再把这个目录添加到系统环境变量PATH下面。

下面我以Firefox为例,既然上面写着47+ , 那么我就下载48来演示好了

Firefox历史版本下载:http://ftp.mozilla.org/pub/firefox/releases/

官方demo代码

var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until; var driver = new webdriver.Builder()
.forBrowser('firefox')
.build(); driver.get('http://www.google.com/ncr');
driver.findElement(By.name('q')).sendKeys('webdriver');
driver.findElement(By.name('btnG')).click();
driver.wait(until.titleIs('webdriver - Google Search'), 2000);
driver.quit();

PS:如果出现【Could not convert 'text' to string】,别担心,这是新版webdriver的bug。在stackoverflow上已有其它开发者解决:

https://github.com/mozilla/geckodriver/issues/683

只需要修改node_modules\selenium-webdriver\lib\webdriver.js中的代码即可:

https://github.com/SeleniumHQ/selenium/commit/6907a129a3c02fe2dfc54700137e7f9aa025218a

正常运行后,会自动启动Firefox,访问 Google 并且搜索 webdriver。然后关闭浏览器。

有时候,需要模拟移动端浏览器测试。例子如下,这次使用Chrome浏览器来测试,请下载对应的版本驱动

var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until,
chrome = require('selenium-webdriver/chrome'); var driver = new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(new chrome.Options()
.setMobileEmulation({deviceName: 'Google Nexus 5'}))
.build(); driver.get('https://m.baidu.com');
driver.findElement(By.name('word')).sendKeys('webdriver');
driver.findElement(By.name('word')).submit();
driver.wait(until.titleIs('webdriver - 百度'), 2000);
driver.quit();

常用的deviceName还是以iPhone为主,名字举例:Apple iPhone 6 Plus、Apple iPhone 4等

Selenium3.X 与 Javascript (Nodejs)的更多相关文章

  1. VSCode and NoteBook for JavaScript | NodeJS

    VSCode调试HTML环境配置 | Jupyter NoteBook IJavaScript 配置 VSCode调试HTML环境配置 先安装两个插件:Debugger for Chrome(调试) ...

  2. Sublime Text3搭建完美开发环境(Python+PHP+Javascript+nodejs+C++)

    一.Sublime配置(如已安装Package Control可跳过) sublime下载地址:http://www.sublimetext.com/3 安装Package Control插件: 直接 ...

  3. Javascript / Nodejs call 和 apply

    call: 改变了函数运行的作用域,即改变函数里面this的指向apply:同call,apply第二个参数是数组结构 例如: this.name = 'Ab'var obj = {name: 'BB ...

  4. NodeJS中 package.json各属性分析

    package.json 中包含各种所需模块以及项目的配置信息(名称.版本.许可证等)meta 信息. Name:它属于必须字段,在package.json中最重要的就是name和version字段, ...

  5. NodeJS中 package.json 解析

    package.json 中包含各种所需模块以及项目的配置信息(名称.版本.许可证等)meta 信息. 包含可配置项 name 名称 应用描述 description 版本号 version 应用的配 ...

  6. Nodejs学习笔记(一)--- 简介及安装Node.js开发环境

    目录 学习资料 简介 安装Node.js npm简介 开发工具 Sublime Node.js开发环境配置 扩展:安装多版本管理器 学习资料 1.深入浅出Node.js http://www.info ...

  7. NodeJS学习之异步编程

    NodeJS -- 异步编程 NodeJS最大的卖点--事件机制和异步IO,对开发者并不透明 代码设计模式 异步编程有很多特有的代码设计模式,为了实现同样的功能,使用同步方式和异步方式编写代码会有很大 ...

  8. nodejs开发环境sublime配置

    前端时间使用webstorm搭建一个node.js的学习环境,感觉非常强大.不过由于其加载的速度,每次让都让我抓狂.后来我找到了一个sublime.虽说3.0以上是收费的,2.0暂时免费.官方的不对s ...

  9. javascript summary

    Client Javascript HTML5: http://www.html5rocks.com/en/ Libraray: JQuery, JQuery Mobile, Zepto, MoolT ...

随机推荐

  1. C#中axWindowsMediaPlayer控件的用法

    属性/方法名: 说明:[基本属性] URL:String; 指定媒体位置,本机或网络地址uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisibleplay ...

  2. JquerySession使用

    添加数据 $.session.set('key', 'value') 删除数据 $.session.remove('key'); 获取数据 $.session.get('key'); 清除数据 $.s ...

  3. Python_Tips[3] -> sort/sorted 排序函数

    排序函数 / Sort Function list自带的sort函数可以实现对列表的排列功能,具有同样功能的还有sorted函数. 基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址 ...

  4. 【bzoj4720】【noip2016】【换座位】期望dp+Floyd

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62370736 wa...已经快一年了,重新来做这 ...

  5. SQL DISTINCT 用法(去重)

    现在以下数据 查有出现的TeacherId SELECT TeacherID FROM Student 结果 有重复的ID出现 确实查法: SELECT TeacherID FROM Student ...

  6. centos下配置ssh使用密钥

    查询了网上的一些教程,然后根据自己的实际操作,记录自己实际配置ssh密钥的过程: 首先在centos终端切换到要链接的用户,比如用户ssh 使用该用户生成密钥: ssh-keygen -t rsa 中 ...

  7. nodejs处理高并发问题

      做了一个nodejs并发测试,先描述一下环境 数据库mysql,大概两张表,读取第一张表test的数据,拿出来-1,存到第二张testlog表记录一下,用jmeter同事模拟50个请求,结果发现, ...

  8. [置顶] kubernetes资源类型--RC和RS

    Replication Controller(RC) RC是K8S中的另一个核心概念,应用托管在K8S后,K8S需要保证应用能够持续运行,这是RC的工作内容. 主要功能 确保pod数量:RC用来管理正 ...

  9. 使用PHPEXCEL导入数据到数据库

    导出功能参考:http://www.cnblogs.com/zhouqi666/p/5978017.html 比较严重的问题:当遇到excel数据量比较大的时候,会发生内存溢出的情况,目前无法解决 e ...

  10. JavaScript indexOf() 方法,获取元素的位置;Object.keys()获取对象的所有key的数组

    定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. 语法 stringObject.indexOf(searchvalue,fromindex) 参数 描述 sea ...