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

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() 返回调用执行js的结果。打印这两个方法的返回值看起来一样,但是如果需要使用js的返回值进一步处理的话,尽量使用page.evaluate()执行js,因为page.evaluate_handle()返回的是JSHandle对象,进一步处理比较麻烦。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值