Document

selenium 一款UI自动化测试工具,能让你使用编程语言访问并操作各主流浏览器(谷歌、火狐、IE、Edge等),目前支持的语言有:Ruby、JavaScript(node.js)、JavaPython、C#。

LANGUAGE VERSION RELEASE DATE LINKS
Ruby 3.142.6 October 04, 2019 Download Changelog API Docs
JavaScript 4.0.0-alpha.5 September 08, 2019 Download Changelog API Docs
Java 3.141.59 November 14, 2018 Download Changelog API Docs
Python 3.141.0 November 01, 2018 Download Changelog API Docs
C# 3.14.0 August 02, 2018 Download Changelog API Docs

由于 selenium 的一些功能及特性,不仅在自动化测试方面独领风骚,而且可以使用在网页处理、爬虫上,对爬虫功能有强力增强。

Selenium 是一套Web应用的测试框架,包括:Selenium IDE、Selenium RC、Selenium Grid、Selenium WebDriver:

Selenium IDE:是一个Firefox浏览器的附加组件,提供录制回话功能,可以快速创建测试用例,并且可以将录制生成的脚本转换为多种编程语言的脚本。

Selenium RC:Selenium RC(Remote  Control)是一个用Java语言编写的服务端,可以处理测试脚本发送过来的HTTP请求,来操作浏览器。

Selenium Grid:支持分布式测试,即可以在不同平台、不同浏览器的多台远程机器上同时运行Selenium测试脚本,从而提高测试效率,减少执行时间。

Selenium WebDriver:WebDriver是测试脚本的核心,在测试脚本中,通过调用WebDriver对象的方法来操作浏览器。

一、npm install -g selenium-webdriver && npm link selenium-webdriver    

输入以上命令全局安装 selenium-webdriver 并连接到当前项目;

二、下载不同浏览器的WebDriver,并将其复制到脚本目录下,注意版本对应:

ChromeDriver(谷歌浏览器)、GeckoDriver(火狐浏览器)、internet explorer(IE)、Edge 如:

使用的谷歌浏览器为 78.0.3904.108版,ChromeDriver使用的为 78.0.3904.105 版

火狐浏览器使用的最新版,GeckoDriver使用的是最新的 0.26.0 

三、火狐浏览器测试代码:

1、先来一个打开浏览器,然后自动关闭浏览器代码:

const {Builder, By, Key, until} = require('selenium-webdriver'); //导入selenium 

(async () => {
//创建一个chrome 浏览器实例
const driver = await new Builder().forBrowser('firefox').build();
try {
await driver.manage().window().maximize();
await driver.get("https://www.mchweb.net");//打开 码云,并自动登录
await driver.sleep(5 * 1000);//等等 5
} finally {
await driver.quit(); //关闭浏览器
}
})()
;

2、自动登录码云:

const {Builder, By, Key, until} = require('selenium-webdriver'); //导入selenium 

(async () => {
//创建一个chrome 浏览器实例
const driver = await new Builder().forBrowser('firefox').build();
try {
await driver.manage().window().maximize();
await driver.get("https://gitee.com/login");//打开 码云,并自动登录
//设置用户名
await driver.findElement(By.id('user_login')).sendKeys('test@qq.com');
//设置密码
await driver.findElement(By.id('user_password')).sendKeys('xxxxx');
//点击登录按钮
await driver.findElement(By.className('ui fluid orange submit button large')).click();
await driver.sleep(5 * 1000);//等等 5
} finally {
await driver.quit(); //关闭浏览器
}
})()
;

四、谷歌浏览器测试代码:

const {Builder, By, Key, until} = require('selenium-webdriver'); //导入selenium 

(async () => {
//创建一个chrome 浏览器实例
const driver = await new Builder().forBrowser('chrome').build(); //创建一个chrome 浏览器实例
try {
await driver.get("https://www.mchweb.net"); //打开https://www.mchweb.net
await driver.sleep(5 * 1000);//等等 5
} finally {
await driver.quit(); //关闭浏览器
}
})()
;