selenium-webdriver 的简单使用

这里主要介绍如何使用 js 版本的 webselenium:

一:安装 Nodejs

对应各版本下载地址:https://npm.taobao.org/mirrors/node

这个是国内的淘宝源镜像,如果不FQ下载速度可观,如果是最新版本的 Node 安装在 windows 系统需要至少 windows8

安装好 Node 后一般还会安装相配套的 Node 包管理工具 npm,也可以使用 yarn 来作为替代,npm 优化前 yarn 更多被开发使用

命令行:npm i -g yarn

二:安装 selenium-webdriver

选择一个空文件夹,输入命令 yarn init -y,我们就可以初始化一个基本的 Node 项目,下面的 package.json 就是项目的包配置文件

紧接着输入 yarn i selenium-webdriver,就会将相应库从云端拉至本地

新建一个 app.js 文件来写对应的测试脚本:

    const { webdriver,By,until } = require('selenium-webdriver');
    const driver = new webdriver.Builder()
        .forBrowser('chrome')
        .build();
    driver.get('http://www.baidu.com/');

上述代码就可以打开一个简单的百度搜索页面,如果要灵活使用 webselenium 来完成更多复杂的测试则需要熟练掌握其 api

三:常用方法

从 npm 下载的 selenium-webdriver 使用 Typescript 和 oop 的风格构建库,因此可以很方便地找到代码引用和各种 api 的使用方式。另一个很重要的特点是大量使用 Promise ,几乎所有 api 返回值都是 Promise,因此可以很好地进行异步同步化处理。

下面是根据个人经验列举出常用的 api:

1. driver.findElement(By.css(string CSSSelector));

    根据 css 选择器定位 html 元素

2.driver.wait( until.elementLocated(WebElementPromise promise), 10000 );

    页面将等待至某个 html 元素出现,第二个参数设置超时毫秒数

3.await driver.actions().click(WebElementPromise promise).sendKeys("input").perform();

    链式操作,最后的 perform 让人联想到函数式编程里的洋葱模型

4.await driver.executeAsyncScript(`const callback = arguments[arguments.length - 1]; callback("returnValue");`);

    可以猜到类似字符串拼接成函数执行体的方式,就不难理解如何使用了,使用 callback 异步获取返回值,同步自然可以在字符串里直接使用 return returnValue 的方式

5.driver.getAllWindowHandles() 和 driver.switchTo().window(newWindowHandle);

    类似浏览器新开一个 tab 页然后切到新的 tab 页

posted on 2021-02-19 12:50  Lowki  阅读(231)  评论(0编辑  收藏  举报