DingMing

丁大铭的个人空间,用来分享一些前端小技巧,默默成长吧,哈哈

自动化脚本之Selenium

  |  
 阅读次数

背景

最近失业在家,经表哥介绍,日本一些刷单的活动,可以赚点零花钱,所以开始研究一下前端自动化的一些脚本。一下是我的一些总结

1.什么是 Selenium Webdriver

Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序。虽然 Selenium 本身在其工具套件中有许多迭代,但 WebDriver 是 Web 自动化框架,它允许用户针对各种不同的浏览器执行测试,而不仅仅是在 Firefox 或 Chrome 上进行测试。

相对与 Puppeteer,Selenium 是一个更加通用的工具,可以用于多种浏览器,而 Puppeteer 只能用于 Chrome 浏览器。

WebDriver 以本地化方式驱动浏览器,就像用户在本地或使用 Selenium 服务器的远程机器上所做的那样,这标志着浏览器自动化的飞跃。

Selenium WebDriver 指的是语言绑定和各个浏览器控制代码的实现。 这通常被称为 WebDriver。

2.安装 Selenium

1
2
本地安装
npm install selenium-webdriver mocha

3.使用 Selenium (以 Safari 为例)

解释:为什么不用 chrome,因为 chrome 需要安装驱动,而 Safari 是自带的。
因为 chrome 是强制自动更新的,而且 chrome 在升级到 115 之后,需要自行安装测试驱动,没有 windows 使用的方便。

之后的介绍以 Safari 为例:

系统: macOS 13.2.1
Safari: 16.3

由于 safari 浏览器本身已经集成了 safaridriver,只要启用并开启即可,步骤如下:

1.启用 safaridriver:

1
safaridriver --enable

2.尝试运行 safraidriver,看是否有权限问题。

1
/usr/bin/safaridriver

3.编写脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const { Builder, By, Key, until } = require('selenium-webdriver')
const selenium = require('selenium-webdriver')

const driver = new selenium.Builder().forBrowser('safari').build()

driver.get('https://www.baidu.com')

const sleep = (time) => {
return new Promise((resolve) => {
setTimeout(resolve, time * 1000)
})
}
const login = async () => {
await sleep(1)
const input = await driver.findElement(By.id('kw'))
await input.sendKeys('selenium')
await sleep(1)
await input.sendKeys(Key.RETURN)
await sleep(1)
await driver.wait(until.titleIs('selenium_百度搜索'), 1000)
await sleep(10)
await driver.quit()
}

login()

是不是很简单,之后就能按照自己的需求进行脚本编写了!

参考链接:nodejs| 淘宝秒杀脚本