我的GitHub
0%

无星的自动化之旅(二)——PlayWright的一些常见问题

写在前面

好久没写playwright的相关内容了,但最近用的还是挺多的,有些常见的问题,决定还是写下来。

内网安装

我所在的公司内网是不联网的,只有一个npm私有源,并且上游源是需要通过审批才能更新的。

说人话就是,有的包有,有的包没有,没有的包也没办法从上游源拉取。

幸运的是,有playwright的低版本。

不幸的是,安装过程中需要安装若干浏览器内核,在内网是无法下载的。

不过更幸运的是,在掘金随手点开的一篇文章,看到有人提到了这个。

对作者表示感谢。

这里引用一下。

在可以进行外网访问的电脑上,随便新建一个文件夹

npm i @playwright/test -D

如果你像我一样,是有版本限制的,请下载对应版本号的包,例如我这里用1.24.3

npm i @playwright/test@1.24.3 -D

npx playwright@1.24.3 install

访问C:\Users\用户名\AppData\Local\ms-playwright

MAC地址为/Users/xingwu/Library/Caches/ms-playwrigh

压缩,然后到内网电脑的相同地址解压,再npm install plawright@1.24.3即可

官方文档的地址

操作iframe内的dom

先找到iframe的id,再通过iframe找到对应的dom

1
2
const iframe = page.frameLocator('#my-iframe')
await iframe.locator("selectro").click()

获取dom

通过locator获取.elementHandles()

1
2
3
const elements = await page.locator('tr', { has: page.locator('text=' + text), class: 'towntr' }).elementHandles();
// 获取文字
const text = await elements[0].innerText()

某些情况下输入框无法输入

本来对于输入框,应该使用page.fill()去输入

但是总有一些奇奇怪怪的情况,无法输入

对于这种情况,我们可以通过page.key去操作键盘输入

例如我要输入账号密码

1
2
3
4
5
6
7
8
9
10
11
const account = ''
const password = ''

await page.keyboard.insertText(account);
await page.keyboard.press('Tab');

const pArray = password.split('');
for(let index = 0; index < pArray.length; index ++){
const element = pArray(index)
await page.keyboard.down(element);
}
我是阿星,阿星的阿,阿星的星!