首页 > 编程语言 > python+playwright 学习-3.页面操作Action

python+playwright 学习-3.页面操作Action

时间:2023-02-21 13:22:06浏览次数:28  
标签:playwright get python 元素 label locator Action page fill

前言

Playwright 可以与 HTML 输入元素交互,例如文本输入、复选框、单选按钮、选择选项、鼠标单击、键入字符、键和快捷方式以及上传文件和焦点元素。

fill() 输入文字

使用 locator.fill() 是填写表单字段的最简单方法。它聚焦元素并input使用输入的文本触发事件。它适用于<input>,<textarea>[contenteditable]元素。

同步示例

# Text 文本框输入
page.get_by_role("textbox").fill("Peter")

# 根据label 定位 Date 日期输入
page.get_by_label("Birth date").fill("2020-02-02")

# Time input
page.get_by_label("Appointment time").fill("13:15")

# Local datetime input
page.get_by_label("Local time").fill("2020-03-02T05:15")

异步示例

# Text input
await page.get_by_role("textbox").fill("Peter")

# Date input
await page.get_by_label("Birth date").fill("2020-02-02")

# Time input
await page.get_by_label("Appointment time").fill("13:15")

# Local datetime input
await page.get_by_label("Local time").fill("2020-03-02T05:15")

以下登录框示例, 在不查看元素属性的情况下,可以直接根据输入框的label 标签定位,非常的方便

# 直接根据label定位
    page.get_by_label("用 户 名:").fill("yoyo")
    page.get_by_label("密     码:").fill("aa123456")

Type 输入

一个字符一个字符地输入字段,就好像它是一个使用locator.type()的真实键盘的用户。

# Type character by character
page.locator('#area').type('Hello World!')

此方法将发出所有必要的键盘事件,所有keydown, keyup,keypress事件就位。您甚至可以指定delay按键之间的可选操作来模拟真实的用户行为。
大多数时候,page.fill()会正常工作。如果页面上有特殊的键盘处理,您只需要键入字符。

鼠标点击 click()

执行简单的人工点击。

# Generic click
page.get_by_role("button").click()

# Double click
page.get_by_text("Item").dblclick()

# Right click
page.get_by_text("Item").click(button="right")

# Shift + click
page.get_by_text("Item").click(modifiers=["Shift"])

# Hover over element
page.get_by_text("Item").hover()

# Click the top left corner
page.get_by_text("Item").click(position={ "x": 0, "y": 0})

在幕后,这个和其他与指针相关的方法:

  • 等待具有给定选择器的元素出现在 DOM 中 (不用自己去写轮询等待了
  • 等待它显示出来,即不为空,不display:none,不visibility:hidden (这个太人性化了,不用去判断元素是否隐藏
  • 等待它停止移动,例如,直到 css 转换完成
  • 将元素滚动到视图中 (这个太人性化了,不用自己去滚动了
  • 等待它在动作点接收指针事件,例如,等待直到元素变得不被其他元素遮挡
  • 如果元素在上述任何检查期间分离,则重试

由此可见,click() 方法优化了selenium 点击元素的遇到的一些痛点问题,比如元素遮挡,不在当前屏幕,元素未出现在DOM中或隐藏不可见等不可点击的状态。

使用示例

    page.get_by_label("用 户 名:").fill("yoyo")
    page.get_by_label("密     码:").fill("aa123456")
    page.locator("text=立即登录").click()
    # page.click("text=立即登录")

文件上传

您可以使用locator.set_input_files()方法选择要上传的输入文件。
它期望第一个参数指向类型为 的输入元素"file"。数组中可以传递多个文件。
如果某些文件路径是相对的,则它们将相对于当前工作目录进行解析。空数组清除所选文件。

# Select one file
page.get_by_label("Upload file").set_input_files('myfile.pdf')

# Select multiple files
page.get_by_label("Upload files").set_input_files(['file1.txt', 'file2.txt'])

# Remove all the selected files
page.get_by_label("Upload file").set_input_files([])

# Upload buffer from memory
page.get_by_label("Upload file").set_input_files(
    files=[
        {"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"}
    ],
)

如果当前没有输入元素(它是动态创建的),您可以处理page.on("filechooser")事件或在您的操作中使用相应的等待方法:

with page.expect_file_chooser() as fc_info:
    page.get_by_label("Upload file").click()
file_chooser = fc_info.value
file_chooser.set_files("myfile.pdf")

select 下拉框

标签:playwright,get,python,元素,label,locator,Action,page,fill
From: https://www.cnblogs.com/yoyoketang/p/17140617.html

相关文章

  • Python 学习记录
    前言Python3.5安装步骤Python官网Pycharm第一个程序.pyprint("hellopython")基本语法type(a)=数据类型整数(在线进制转换)定义a=12Python可以......
  • Excel文件 利用MySQL/Python 实现自动处理数据的功能
    目录问题描述:解决方案:一、SQL查询二、SQL、python处理三、python处理四、优化python处理1.手动执行代码2.开机自动执行代码对比四种方案:总结:问题描述:在没有服务器存储数......
  • python+playwright 学习-2.Selector 选择器定位元素
    前言Selector选择器,也就是通常说的元素定位了,页面上点点点的操作,都是基于元素定位,所以这块是重点需要学的核心内容。Selector选择器说到元素定位,大家肯定会首先想到s......
  • python super()
    还未看:​​https://www.runoob.com/w3cnote/python-super-detail-intro.html​​参考文章:​​https://www.runoob.com/python/python-func-super.html​​......
  • 02Python输入输出
    输入输出print()函数sep=''数据之间一空格分割,默认是空格end='\n'在打印后会额外的加一个数据,默认是换行符print("hello","world") print("hello","worl......
  • python 递归创建文件夹
    os.makedirs(name,mode=0o777,exist_ok=False)作用用来创建多层目录(单层请用os.mkdir)参数说明 name:你想创建的目录名mode:要为目录设置的权限数字模式,默认的模式为......
  • VUEX 使用学习四 : action
    转载请注明出处:action用于处理异步任务;​​action​​,可以操作任意的异步操作,类似于​​mutations​​,但是是替代​​mutations​​来进行异步操作的。首先​​mutatio......
  • python、js实现WGS84、高德(火星)、百度坐标转换
    在日常工作学习中常会涉及到WGS84、高德(火星/谷歌)、百度三种空间坐标系的坐标转换,本文将通过python、js两种语言实现坐标系的转换。坐标系说明:wgs84:为一种大地......
  • Python项目部署服务器
    Python项目部署服务器1、使用pipreqs,只会生成当前项目使用的依赖pip3installpipreqs2、在当前目录生成requirement依赖。(若当前路径不是项目路径需要将【.】改为项......
  • Python--字典底层存储、补充:类型对象、函数传参
    补充#python字典底层存储https://www.cnblogs.com/xiaoyuanqujing/articles/12008689.html#Python中数据类型都是对象都是地址引用,不存在值类型,都是......