使用 Playwright 控制浏览器的启动、停止和等待

简介: Playwright是一个自动化测试工具,能模拟浏览器行为并灵活控制其启动、停止和等待。通过`sync_playwright().start()`和`.stop()`控制浏览器,使用`slow_mo`参数全局减慢执行速度以方便观察。与Selenium不同,Playwright不支持`time.sleep()`,而是用`page.wait_for_timeout()`进行等待。文中展示了启动浏览器、设置延迟及页面交互的Python代码示例,并提到Playwright的无头模式和等待机制的变化。下文将讨论元素定位方法。

image.png

简介

Playwright 是一个强大的自动化测试工具,它不仅可以模拟用户在浏览器中的行为,还能够灵活控制浏览器的启动、停止和等待操作。在本文中,我们将探讨如何使用 Playwright 进行这些操作。

启动停止浏览器

我们之前是使用with方法来控制浏览器启动和停止,现在我们来介绍一下使用start stop来控制浏览器,代码如下:

from playwright.sync_api import sync_playwright

playwright = sync_playwright().start()

browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://www.ceshiren.com/")


browser.close()
playwright.stop()

等待

我们之前介绍过,相对于selenium,playwright执行速度会更快,为了便于我们查看执行的过程,我们可以加上等待来减缓执行,但是与selenium不同,playwright通过slow_mo (单位是毫秒)减慢执行速度,它的作用范围是全局的,从启动浏览器到操作元素每个动作都会有等待间隔,方便在出现问题的时候看到页面操作情况。使用方法如下:

chromium.launch(headless=False, slow_mo=50)

示例代码如下:

from playwright.sync_api import sync_playwright


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    print(page.title())
    page.fill('#kw', "测试人社区")
    page.click('#su')
    browser.close()

注:与selenium不同,playwright不再支持time.sleep(),而是使用page.wait_for_timeout()来实现等待,当我们调试时需要等待,即可使用该方法。

示例代码如下:

from playwright.sync_api import sync_playwright



with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    print(page.title())
    # 等待5秒
    page.wait_for_timeout(5000)
    page.fill('#kw', "测试人社区")
    page.click('#su')
    # 等待3秒 
    page.wait_for_timeout(3000)
    browser.close()

运行结果如下:

image.png

image.png

总结

本文主要介绍了一些playwright的简单使用,playwright的使用与selenium有一些不同,我们需要注意不同点,比如playwright默认是无头模式运行以及等待的改变。下一篇文章我们将介绍playwright定位元素的方法。

相关文章
|
1月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
67 1
|
7月前
|
Web App开发 测试技术 API
playwright使用:启动浏览器与多种运行方式
本文介绍了Playwright,一个用于浏览器自动化的强大工具,支持Chrome、Firefox和WebKit。展示了如何同步和异步启动浏览器,以及使用`with`语句和`start/stop`方法。通过设置`headless=False`可显示浏览器界面。Playwright的等待机制不同于Selenium,采用`slow_mo`全局减速或`wait_for_timeout`进行等待。文章还展示了填写表单和点击元素的示例,并预告下文将讨论元素定位方法。
|
7月前
|
JavaScript 前端开发
Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界
在Web自动化中,Playwright提供`page.evaluate()`和`page.evaluate_handle()`来执行JavaScript脚本。`page.evaluate()`返回脚本执行结果,而`page.evaluate_handle()`返回JSHandle。示例展示了如何使用它们,如打印网页标题、操作元素及获取页面内容。通过这些方法,可以处理常规方法难以操作的网页元素。
|
7月前
|
Web App开发 测试技术 C++
Playwright安装与Python集成:探索跨浏览器测试的奇妙世界
Playwright是新兴的跨浏览器测试工具,相比Selenium,它支持Chrome、Firefox、WebKit,执行速度快,选择器更稳定。安装Playwright只需一条`pip install playwright`的命令,随后的`playwright install`会自动添加浏览器,无需处理浏览器驱动问题。这一优势免去了Selenium中匹配驱动的烦恼。文章适合寻求高效自动化测试解决方案的开发者。
|
数据采集 前端开发 API
Playwright: 比 Puppeteer 更好用的浏览器自动化工具(下)
Playwright: 比 Puppeteer 更好用的浏览器自动化工具
343 0
|
数据采集 Web App开发 JavaScript
Playwright: 比 Puppeteer 更好用的浏览器自动化工具(上)
Playwright: 比 Puppeteer 更好用的浏览器自动化工具
509 0
|
数据采集 Web App开发 IDE
玫瑰花变蚊子血,自动化无痕浏览器对比测试,新贵PlayWright Vs 老牌Selenium,基于Python3.10
Selenium一直都是Python开源自动化浏览器工具的王者,但这两年微软开源的PlayWright异军突起,后来者居上,隐隐然有撼动Selenium江湖地位之势,本次我们来对比PlayWright与Selenium之间的差异,看看曾经的玫瑰花Selenium是否会变成蚊子血。
玫瑰花变蚊子血,自动化无痕浏览器对比测试,新贵PlayWright Vs 老牌Selenium,基于Python3.10
|
Web App开发 JavaScript 前端开发
playwright自定义浏览器设备、时区、经纬度、userAgent、注入脚本
playwright自定义浏览器设备、时区、经纬度、userAgent、注入脚本
1340 0
|
存储 JavaScript 前端开发
Selenium之操作浏览器、元素等待、窗体切换和弹窗处理
最常用的几个方法: clear() 清除文本,send_keys(*values) 模拟按键输入,click() 单击元素, submit() 用于提交表单,有时候可以与click()方法互换使用。
|
1月前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式