Hello Playwright:执行 JavaScript 代码
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hello Playwright:执行 JavaScript 代码相关的知识,希望对你有一定的参考价值。
Playwright 提供了大量的 API 用于与页面元素交互,但是在某些场景下还是不能完全满足要求。比如我们需要获得包括元素本身的 html,但是目前只有下列 API :
InnerHTMLAsync 返回元素内的 HTML 内容
InnerTextAsync 返回元素内的文本内容
而使用 javascript 执行element.outerHTML
是可以获取到包括元素本身的 HTML的:
EvaluateAsync
Page.EvaluateAsync(expression, arg)
API 可以在网页的上下文中运行 JavaScript 函数,并将结果带回 Playwright 环境:
var outerHTML = await page.EvaluateAsync<string>("document.getElementById(\\"kw\\").outerHTML");
arg
参数可以是任何可序列化值:
//基础类型
await page.EvaluateAsync<int>("num=> num+1",1);
//数组
var result = await page.EvaluateAsync<int>("array=> array.length", new[] 1,2,3 );
//对象
await page.EvaluateAsync<int>("o=> o.A+o.B", new A=1,B=2 );
我们还可以直接使用 JavaScript 函数操作元素,比如Click
。虽然 Playwright API 提供了ClickAsync
方法模拟鼠标点击,但是存在一定限制条件,例如元素需要可见且可操作。
如果元素被隐藏了。我们可以走捷径,使用 click 函数强制点击。比如点击百度首页中“更多"链接下的“翻译”链接:
//await page.Locator("//*[@id=\\"s-top-more\\"]/div[1]/a[1]").ClickAsync();
//上面的代码无法执行,因为“翻译”链接处于隐藏状态
await page.EvaluateAsync("document.getElementsByName('tj_fanyi')[0].click()");
添加微信号【MyIO666】,邀你加入技术交流群
以上是关于Hello Playwright:执行 JavaScript 代码的主要内容,如果未能解决你的问题,请参考以下文章