playwright框架入门到精通

一、框架介绍和安装

Playwright 是一个开源的自动化库,由 Microsoft 开发,用于自动化基于 Chromium, Firefox, 和 WebKit 的浏览器。它支持多种语言,包括 Python,并能在 Windows, Linux, 和 macOS 上运行。
支持同步和异步执行。


1、安装环境


安装Playwright:

pip install playwright

安装浏览器驱动:

playwright install
2、入门案例
from playwright.sync_api import sync_playwright
import time

# 创建一个playwright上下文管理器
with sync_playwright() as p:
    # 创建一个浏览器(设置为非headless模式)
    browser = p.chromium.launch(headless=False)
    # 打开一个页面
    page = browser.new_page()
    # 访问淘宝
    page.goto("http://www.taobao.com")

    # 等待10秒
    time.sleep(10)
    # 关闭浏览器
    browser.close()

支持浏览器的类型

with sync_playwright() as p:
    # 使用 p 创建浏览器实例
    firefox_browser = p.firefox
    webkit_browser = p.webkit
    chromium_browser = p.chromium
3、goto打开页面的参数

1、timeout

设置页面加载的超时时间,单位为毫秒。如果页面在指定的时间内未加载完成,将抛出超时异常。

page.goto(url, timeout=30000)  # 设置超时时间为30秒

2、referer:
设置页面导航的引用页面URL,模拟用户从某个特定页面跳转而来。

page.goto(url, referer='https://example.com')

3、wait_until:
设置控制着页面加载完成的条件
●load:等待页面完全加载
●domcontentloaded:等待DOM内容加载完成,即HTML文档已解析完毕,但页面内的资源(如图片、样式表、脚本等)可能还在加载中
●network: 等待所有的网络请求完毕

page.goto(url,wait_until='load')

二、page基础操作

1、基础操作

1、page.goto(): 打开页面
2、page.title():获取标题名称
3、page.content(): 获取页面html
4、page.close(): 关闭页面
5、page.reload():刷新页面
6、page.go_back(): 上一页
7、page.go_forward(): 下一页
8、page.screenshot(): 页面截图

page.goto(url, referer='https://www.baidu.com')
page.locator(selector)

page.locator(selector, **kwargs)

2、定位方式

1、page.locator(): 支持css、xpath元素定位表达式
loc = page.locator('button[type="submit"]')
2、page.get_by_label(): 允许通过input关联的label 元素的文本或属性来查找输入元素
<label for="pwd">密码</label>
<input id="pwd">

page.get_by_label("密码")
3、page.get_by_placeholder():通过输入框的提示占位符来查找元素
<input type="email" placeholder="请输入账号" />

page.get_by_placeholder("请输入账号")
4、page.get_by_text(): 通过文本查找元素
<div>Hello <span>world</span></div>

page.get_by_text("world")
5、page.get_by_title():通过title属性匹配元素
<span title='xount'>25元</span>

page.get_by_title("xount")
6、page.get_by_role(): 允许按元素的 ARIA 角色、ARIA 属性和可访问名称查找元素。
<label>
<input type="checkbox" /> Subscribe
</label>

page.get_by_role("checkbox", name="Subscribe")
7、page.get_by_alt_text():通过元素alt属性的文本值查找元素。
<img alt='logo'>

page.get_by_alt_text("logo")

三、定位器操作

定位器是 Playwright 自动等待和重试能力的核心部分。简而言之,定位器代表了一种随时在页面上查找元素的方法。可以使用 page.locator()方法创建定位器。

1、元素交互方法

1、click(),点击

支持的参数:

  • buttonleft(左键)、right(右键)、middle(中键),默认为left

  • click_count: 点击次数,默认为 1

  • delay: 按下、释放的间隔等待时间

  • modifiers: 同时要按下的修饰键。"Alt"|"Control"|"ControlOrMeta"|"Meta"|"Shift"

  • position: 点击的坐标位置,需要字典格式{x:10,y:20}

  • timeout: 稚嫩等待元素可点击的时间

  • force: 释放绕过可操作性检查

# 点击元素button
page.locator("button").click()

# 按住键盘Shift,点击鼠标右击,在元素的canvas坐标(23,32)位置处
page.locator("canvas").click(
 button="right", modifiers=["Shift"], position={"x": 23, "y": 32}
)
2、dblclick() ,双击

 参数同click方法

page.locator('#btn').dblclick()
 3、fill(),输入内容
page.locator("#usernmae").fill("admin123")
4、clear(),清除内容
page.locator("#kw").clear()
5、set_checked(),设置复选框或单选框的状态 
page.locator('#q5_2').set_checked(True)

6、select_option(),选中下拉选框的一个或者多个选项
<select multiple id='city'>
<option value="red">Red</div>
<option value="green">Green</div>
<option value="blue">Blue</div>
</select>
# 设置一个值
page.locator('#city').select_option("blue")

# 设置多个值
page.locator('#city').select_option(value=["red", "green", "blue"])
7、set_input_files(),文件上传,支持上传单个或者多个文件
# 上传单个文件
page.locator("#Upload").set_input_files('myfile.pdf')
# 上传多个文件
page.locator("#Upload").set_input_files(['file1.txt', 'file2.txt'])
 8、uncheck(),取消选中的单选框
page.locator("checkbox").uncheck()
9、drag_to(),拖拽元素
# 将一个元素拖拽到目标为止
source = page.locator("#source")
target = page.locator("#target")
source.drag_to(target)

# 元素拖拽到指定为止
source.drag_to(
  target,
  source_position={"x": 34, "y": 7},
  target_position={"x": 10, "y": 20}
)
# 练习:https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable
10、focus(),聚焦元素
page.locator("#source").focus()
11、press(),模拟键盘操作
page.press("Shift+A") # 不推荐
page.locator("#source").press("Shift+A")
  • 支持单个键:ShiftControl AltBackspace
  • 也支持组建按键: 比如: Control+oControl+Shift+T

感兴趣,请关注,收藏和点赞,作者将更新的更加快。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值