40新一代自动化测试神器playwright+python系列课程_playwright_执行java script

40_playwright_执行javascript

在之前的章节中,我们已经掌握了 Playwright 的基本功能,包括创建浏览器和页面,定位元素并与之交互等。这些功能已经足够满足大部分的浏览器自动化需求。

然而,在实际应用中,我们可能需要更复杂的操作,这时候 Playwright 的 API 就不足以满足我们的需求了。这时候,我们就需要使用更底层的方式来进行操作,即直接运行 JavaScript。

playwright也支持执行JavaScript脚本,playwright本身就是一个Node.js库,本文介绍playwright-python执行js脚本的方法。

playwright-python使用 evaluate() 方法来执行JavaScript脚本,和selenium类似,也有两种方法实现元素操作。

page.evaluate():直接执行完整的JavaScript脚本。

locator.evaluate():定位到元素后再使用JavaScript执行操作。

实践代码:

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import Playwright, sync_playwright, expect

import re

import pytest

def run(playwright: Playwright) -> None:

    browser = playwright.chromium.launch(headless=False)

    context = browser.new_context()

    page = context.new_page()

    page.goto("http://127.0.0.1/zentao/user-login.html")

    page.evaluate('document.getElementById("account").value = "admin"') #执行js 输入用户名

    page.locator("input[name=\"password\"]").fill("Deshifuzhi01")

    page.get_by_role("button", name="登录").click()

    page.wait_for_timeout(2000)

    t = page.evaluate('document.title') # 执行js 获取网页标题

    print(t)

    page.wait_for_timeout(10000)

    # ---------------------

    context.close()

    browser.close()

with sync_playwright() as playwright:

    run(playwright)

playwright下还有个evaluate_handle()方法,也可以执行js。page.evaluate()和page.evaluate_handle()之间的唯一区别是page.evaluate_handle()返回JSHandle。page.evaluate() 返回调用执行的结果。

实际应用中执行没有区别。

posted @ 2024-03-21 11:06  测试_老姜  阅读(10)  评论(0)    收藏  举报