首页 > 编程语言 >Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界

Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界

时间:2024-05-14 15:52:12浏览次数:19  
标签:playwright 浏览器 evaluate JavaScript sync js Playwright context page

前言

我们在进行web自动化时,经常遇到一些不好操作的元素,普通的元素定位和操作容易报错,如果我们使用的selenium的话,就可以使用selenium调用js脚本进行操作。在playwright 中也有类似的方法,使用page.evaluate()执行JavaScript脚本。
page.evaluate()和page.evaluate_handle()之间的唯一区别是page.evaluate_handle()返回JSHandle。

  • page.evaluate() 返回调用执行的结果
  • page.evaluate_handle()返回JSHandle

page.evaluate()

返回evaluate() 返回执行JavaScript脚本的结果,使用示例如下:

from playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto('https://www.baidu.com')

        print(page.evaluate("1 + 2"))

        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

也可以执行一个函数,如下:

from playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto('https://www.baidu.com')

        print(page.evaluate("() => '拜仁慕尼黑'"))

        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

注:如果传递给page.evaluate()的函数返回一个不可序列化的值,则page.evaluate()解析为undefined

示例

  1. 打印网页标题

执行document.title 获取页面的title,代码如下:

from playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        title = page.evaluate('document.title')
        print(title)
        page.pause()
        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()
  1. 操作元素示例
from playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        js = """
            document.getElementById('kw').value='playwright';
            document.getElementById('su').click();
            """
        page.evaluate(js)
        page.pause()
        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

页面如下:

page.evaluate_handle()

page.evaluate_handle()的返回值是JSHandle。

from playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        a_handle = page.evaluate_handle("document.body")
        result_handle = page.evaluate_handle("body => body.innerHTML", a_handle)
        print(result_handle.json_value())
        result_handle.dispose()
        page.pause()
        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

总结

本文主要介绍了playwright执行js脚本的操作,与selenium一样,playwright同样可以执行js脚本来完成一些不便操作的元素。

标签:playwright,浏览器,evaluate,JavaScript,sync,js,Playwright,context,page
From: https://www.cnblogs.com/hogwarts/p/18191467

相关文章

  • 使用 Playwright 复用 Cookie:简化自动化测试的高效方法
    前言在进行自动化测试时,有时需要在多个测试用例之间共享相同的会话状态。为了实现这一目标,Playwright提供了一种称为Cookie复用的功能,可以让我们在不同的测试用例之间共享同一组Cookie数据。本文将深入介绍如何使用Playwright复用Cookie,并探讨其使用方法和优势。什么是......
  • 无需手动操作:利用 Playwright 自动上传文件
    前言Playwright是一个由Microsoft开发的自动化测试工具,它提供了跨浏览器的自动化测试能力,包括Chrome、Firefox和Safari。除了测试之外,Playwright还可以用于执行浏览器操作,例如模拟用户行为来实现文件上传功能。在本文中,我们将使用Playwright和Python实现自动上传文件......
  • 深入探索:使用 Playwright 处理下拉框的完整指南
    前言在Web应用程序中,下拉框是常见的用户界面元素之一,通常用于选择列表中的选项。在自动化测试中,与下拉框的交互是必不可少的一部分。Playwright是一个强大的自动化测试工具,提供了处理下拉框的灵活方法。本文将深入介绍如何使用Python结合playwright编写代码来处理各种类型......
  • 模拟手机设备:使用 Playwright 实现移动端自动化测试
    前言在今天的Web开发中,移动设备已经成为用户访问网站的主要方式之一。因此,确保网站在移动设备上的正确显示和功能正常运行至关重要。Playwright是一个强大的自动化测试工具,可以帮助开发人员模拟各种移动设备,并进行自动化测试。本文将深入介绍如何使用Python编写代码来模拟......
  • 使用 Playwright 脚本录制简化自动化测试:完全指南
    前言自动化测试是软件开发中的重要环节,它可以提高测试效率和代码质量。然而,编写自动化测试脚本可能需要花费大量时间和精力。为了简化这一过程,Playwright提供了一个强大的功能,称为脚本录制,它可以帮助开发人员通过交互式操作自动生成测试脚本。本文将深入介绍如何使用Playwrigh......
  • 解锁弹框:Python 下的 Playwright 弹框处理完全指南
    前言在Web自动化测试中,处理弹框是一项常见的任务。弹框可能包括警告、确认和提示框。Playwright是一个功能强大的自动化测试工具,提供了处理这些弹框的灵活方法。在本文中,我们将深入探讨如何使用Python编写代码来处理各种类型的弹框。弹框的分类弹框通常分为3种,分别为aler......
  • 精准记录:使用 Playwright 实现屏幕截图
    前言在软件开发和测试中,屏幕截图是一种常用的工具,用于记录应用程序的状态、错误信息等。Playwright提供了一种简单而强大的方式来实现屏幕截图,帮助开发人员和测试人员轻松捕获和分析应用程序的界面。本文将介绍如何使用Playwright实现屏幕截图。screenshot截图在Playwrig......
  • 浏览器缓存
    前言浏览器缓存的问题是面试中关于浏览器知识的重要组成部分,也是性能优化题目的一部分,但是不要被吓到,我话放到这里,就那么点东西,我这一篇文章基本上就涵盖了所有相关的知识点,认真看一遍,所有的问题都是纸老虎。一、准备工作1.1拉取仓库本篇文章因为涉及到了在服务端设置缓存的内容......
  • JavaScript中的 '===' 和 '=='
    在JavaScript中,== 和 === 都是用于比较值的相等性的运算符,但是它们的行为略有不同。== 运算符用于比较值的相等性,而不考虑它们的数据类型。这意味着如果两个值的值相等,即使它们的数据类型不同,它们也会被认为是相等的。例如,== 会将字符串 "123" 与数字 123 视为相等。......
  • 使用 Playwright 控制浏览器的启动、停止和等待
    简介Playwright是一个强大的自动化测试工具,它不仅可以模拟用户在浏览器中的行为,还能够灵活控制浏览器的启动、停止和等待操作。在本文中,我们将探讨如何使用Playwright进行这些操作。启动停止浏览器我们之前是使用with方法来控制浏览器启动和停止,现在我们来介绍一下使用star......