可参考网上的步骤进行操作。例如这篇文章:https://wangheng3751.github.io/2018/01/17/selenium/

1、安装Node.js,去官网下载最新版本的Node.js安装

2、安装selenium

npm install selenium-webdriver --save

3、安装浏览器驱动,以 chrome 为例

npm install chromedriver --save

然后写 demo 测试…

中间我遇到了二个问题

1)“The ChromeDriver could not be found on the current PATH”

需要将 ChromeDriver 添加到系统的环境变量 Path 中

例如我本机的路径 “C:\Users\xxx\AppData\Roaming\npm\node_modules\chromedriver\lib\chromedriver”

2)浏览器打开时,地址栏显示 data; 而不是预期的指定的 url

解决方案,可取先升级自己的浏览器。

或者更换版本,下载最新(下载链接>>)找到版本,将其替换本地路径,更新为最新的 exe 文件

“C:\Users\xxx\AppData\Roaming\npm\node_modules\chromedriver\lib\chromedriver”

一个版本一个版本更换

最后运行 demo,比如 node index.js

// inde.js

var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder()
.forBrowser('chrome')
.build(); // var driver = new webdriver.Builder().
// withCapabilities(webdriver.Capabilities.chrome()).
// build(); // driver.get('http://www.baidu.com');
// driver.findElement(webdriver.By.id('kw')).sendKeys('webdriver', webdriver.Key.RETURN); // https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_By.html
driver.get('https://bugly.qq.com/v2/workbench/apps');
// driver.findElement({ className: 'login_btn' }).findElement({ tagName: 'a' }).click(); driver.wait(webdriver.until.titleIs("QQ帐号安全登录")).then(() => { driver.sleep(5 * 1000).then(() => {
var frameElement = webdriver.By.id('ptlogin_iframe'); driver.switchTo().frame(driver.findElement(frameElement)).then(() => {
driver.findElement({ id: 'qlogin_show' }).findElement({ tagName: 'a' }).click();
});
}); });

能实现自动登录 bugly,因为 bugly 做了很多限制,直接调用它的接口是不行的,所以相当于用程序开启一个浏览器进程,然后用程序控制它。

这个跑 web 的自动化测试还是很方便的,比如上面示例中,打开百度,输入关键字,然后回车。

爬虫的话,可能有一些站点做了很多严格的限制,比如 referer 或者 加过密,此时用 Selenium 来自动化填写表单,然后获取数据并存到数据库,还是挺方便的。

更多官网的API可以前往这里查看,https://seleniumhq.github.io/selenium/docs/api/javascript/index.html

Node + Selenium使用小结的更多相关文章

  1. 基于python的Selenium使用小结

    之前介绍过基于Unittest和TestNG自动化测试框架,然而基于Web端的测试的基础框架是需要Selenium做主要支撑的,这里边给大家介绍下Web测试核心之基于Python的Selenium 一 ...

  2. 学习Node.js知识小结

    什么是Node.js 官方解释:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js使用了一个事件驱动.非阻塞式I/O的模型( Node.js的特性 ...

  3. Node + Selenium 报错 UnhandledPromiseRejectionWarning: Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:5319

    安装selenium-webdriver npm i selenium-webdriver 当前安装版本: "selenium-webdriver": "^4.0.0-a ...

  4. Selenium - WebDriver 小结(1)

    public class Base { SimpleDateFormat formatterTime = new SimpleDateFormat("yyyyMMdd_hhmmssa&quo ...

  5. Node.js 启动小结

    配置环境变量: cmd-------> 启动dyson服务 在项目的路径下 如open cmd进入open目录执行npm start命令 在浏览器下输入访问地址:http://localhost ...

  6. selenium grid2 使用远程机器的浏览器

    下载 selenium-server-standalone-3.4.0.jar包 在selenium-server-standalone-3.4.0.jar包目录下面执行cmd 命令 java -ja ...

  7. java实现二叉树的Node节点定义手撕8种遍历(一遍过)

    java实现二叉树的Node节点定义手撕8种遍历(一遍过) 用java的思想和程序从最基本的怎么将一个int型的数组变成Node树状结构说起,再到递归前序遍历,递归中序遍历,递归后序遍历,非递归前序遍 ...

  8. jenkins2 pipeline插件的10个最佳实践

    jenkins pipeline的10个最佳实践. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...

  9. [转] Jenkins Pipeline插件十大最佳实践

    [From] http://blog.didispace.com/jenkins-pipeline-top-10-action/ Jenkins Pipeline 插件对于 Jenkins 用户来说可 ...

随机推荐

  1. Bean Shell常用内置变量总结

    JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log文件,使用方法:log.info( ...

  2. Python面向对象2-类和构造方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-08-05 # O ...

  3. js拷贝

    现在有一个对象 var obj = { name: '隔壁老王', age: 60, sex: 'male' } 我们现在想把obj里的每一个属性拷贝到一个空对象var obj1 = {}中,那么需要 ...

  4. Excel ——多表关联查询-vlookup

    一.分组 需求: 在B列的右侧添加一列[消费分组]对B列的[月分组水平]进行分组,原始数据如下: 公式:在 C2 输入:“=VLOOKUP(B2,$E$1:$G$4,2,1)”,下拉填充. 提示:VL ...

  5. miniui格式化日期的方法

    <div field="InsertTime" renderer="ondayRenderer" headerAlign="center&quo ...

  6. Running Median POJ - 3784 (对顶堆/优先队列 | 链表)

    For this problem, you will write a program that reads in a sequence of 32-bit signed integers. After ...

  7. HDU3339 In Action 【最短路】+【01背包】

    <题目链接> 题目大意: 给出一个0-n组成的图,1-n的点上分布着值为pow的电站,给出图的m条边以及距离,从0出发到n个点中的x个点的行走距离和最小(因为是每炸一个点派出一辆坦克),且 ...

  8. Spring Boot 项目实战(四)集成 Redis

    一.前言 上篇介绍了接口文档工具 Swagger 及项目监控工具 JavaMelody 的集成过程,使项目更加健壮.在 JAVA Web 项目某些场景中,我们需要用缓存解决如热点数据访问的性能问题,业 ...

  9. Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  10. XamarinEssentials教程移除键值首选项的键值

    XamarinEssentials教程移除键值首选项的键值 如果开发者不再使用首选项中的某一项时,可以将该项移除掉.此时可以使用Preferences类的Remove()方法,该方法可以将存在于首选项 ...