Playwright 是一个强大的自动化测试库,支持在浏览器上下文中执行 JavaScript 脚本。
常见使用方法
通过使用 page.evaluate() 和 locator.evaluate() 方法,可以在页面中执行各种 JavaScript 操作。
使用 page.evaluate() 方法
page.evaluate() 方法允许在页面上下文中执行 JavaScript 代码,并返回执行结果。它的基本语法如下:
result = await page.evaluate(script, *args)
其中,script 是一个 JavaScript 字符串,表示要在页面上下文中执行的代码,args 是可选参数,可以传递给 JavaScript 代码的参数列表。
示例代码
以下是一个使用 page.evaluate() 方法的示例,展示了如何在页面中执行 JavaScript 代码:
python
from playwright.sync_api import sync_playwright
class TestJs:
def setup(self):
playwright = sync_playwright().start()
self.browser = playwright.chromium.launch(headless=False)
self.context = self.browser.new_context()
self.page = self.context.new_page()
def teardown(self):
self.browser.close()
def test_case1(self):
self.page.goto("https://www.baidu.com/")
# 获取浏览器语言
lan = self.page.evaluate("window.navigator.language;")
assert lan == "zh-CN"
# 获取当前浏览器标题
title = self.page.evaluate("document.title;")
assert title == self.page.title()
self.page.evaluate('document.getElementById("kw").value = "test"') # 搜索框输入"test"
text = self.page.evaluate("document.getElementById('kw').value") # 读取输入的值
assert text == "test"
self.page.evaluate('document.getElementById("su").click()') # 点击【百度一下】
self.page.click("#page >> text=2")
使用 locator.evaluate() 方法
locator.evaluate() 方法允许在定位到元素后执行 JavaScript 操作。以下是一个示例,展示了如何使用 locator.evaluate() 方法:
python
def test\_case2(self):
self.page.goto("<https://www.baidu.com/>")
# 搜索框输入"test"
input\_handle = self.page.query\_selector("id=kw")
input\_handle.evaluate('node => node.value = "test"')
text = input\_handle.evaluate('node => node.value') # 读取输入的值
assert text == "test"
# 点击【百度一下】
submit\_handle = self.page.query\_selector("id=su")
submit\_handle.evaluate('node => node.click()')
time.sleep(10)
通过这些方法,您可以在 Playwright 中轻松地执行各种 JavaScript 操作,如操作 DOM 元素、获取页面数据、执行复杂的计算等,从而实现自动化测试和页面操作