selenium QuickStart
使用 selenium 进行测试,novnc + chrome + webdriver 的方案,可用于集成测试,也可用于之前老版本的 chrome 兼容测试的替代方案:VNC 控制 Docker Chrome
docker
# 启动最新版本的 selenium
# 7900 为 novnc 端口,4444 为 selenium 端口
$ docker run -it --rm -p 7900:7900 -p 4444:4444 --name chrome selenium/standalone-chrome
# novnc 查看
$ open http://localhost:7900/?autoconnect=1&resize=scale&password=secret
脚本
新建 index.mjs 如下:
import webdriver from 'selenium-webdriver';
const { By, Key } = webdriver;
!(async () => {
let driver = await new webdriver.Builder();
driver.forBrowser(webdriver.Browser.CHROME);
driver.usingServer('http://localhost:4444');
driver = driver.build();
try {
await driver.get('https://www.baidu.com');
await driver
.findElement(By.id('kw'))
.sendKeys('webdriver 你好', Key.RETURN);
let title = await driver.getTitle();
console.log(title);
} catch (err) {
console.error(err);
} finally {
await driver.quit();
}
})();
手动启动
# host
$ docker exec -it xxx-container-id bash
# docker
$ cd /usr/bin
$ ./google-chrome-stable
后续
- novnc 对中文输入法支持不够,可能的解法有:
- 1、可能需要安装 linux 特定输入法
- 2、剪贴板支持中文
- 3、通过外部类似 puppeteer 来控制输入
- 4、最快速的方式,目前是通过 base64 来传递:https://base64.us/
- selenium 的 chrome 版本貌似不怎么全