前言
page.evaluate() 是直接在页面对象上执行JavaScript脚本
locator.evaluate() 是对定位的元素执行JavaScript
locator.evaluate_all() 对定位到的所有元素执行JavaScript
locator.evaluate() 对元素执行JavaScript
先用locator 方法定位到元素, 再对元素执行JavaScript
page = browser.new_page()
page.goto("http://127.0.0.1/login.html")
username = page.locator('#username')
# 输入框输入内容
username.evaluate('node => node.value="yoyo"')
# 获取输入框内容
input_value = username.evaluate('node => node.value')
print(input_value) # yoyo
locator.evaluate_all() 执行全部元素
在页面中执行 JavaScript 代码,将所有匹配的元素作为参数。
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(
headless=False
)
page = browser.new_page()
page.goto("https://www.baidu.com/")
links = page.locator('#s-top-left>a')
# 定位全部元素
res = links.evaluate_all('nodes => nodes.length')
print(res) # 7
定位百度页面上的链接, 执行nodes.length
获取元素个数