一、框架介绍和安装
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(),点击
支持的参数:
button
:left
(左键)、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")
- 支持单个键:
Shift
、Control
、Alt
、Backspace
- 也支持组建按键: 比如:
Control+o
、Control+Shift+T
感兴趣,请关注,收藏和点赞,作者将更新的更加快。。。。。。