python+playwright 学习-38.checkbox和radio 相关操作

本文总结了Python Playwright库中关于checkbox和radio的操作,包括click、check、uncheck和set_checked等方法的使用,以及在单选和复选场景下的不同行为。还介绍了如何批量选中checkbox,并提供了相关错误处理示例。

前言

单选框和复选框相关操作总结
locator.click() 点击操作
locator.check() 选中
locator.uncheck() 不选中
locator.set_checked() 设置选中状态
locator.is_checked() 判断是否被选中

使用场景

radio 和 checkbox 使用场景

<div>
           <label>性别:
               <input type="radio" name="sex" id="man" checked>男
               <input type="radio" name="sex" id="woman">女
           </label>
       </div>
       <div>
           <label>标签:
               <input type="checkbox" id="a1"> 旅游
               <input type="checkbox" id="a2">看书
               <input type="checkbox" id="a3" checked >
### 使用 Playwright 进行勾选框操作Playwright 中,处理复选框(checkboxes)、单选按钮(radio buttons)以及输入框(text inputs)是非常常见的需求。以下是关于如何通过 Python 的 `playwright` 库来实现这些功能的具体说明。 #### 1. 勾选/取消勾选复选框 Playwright 提供了专门的方法用于交互复选框。可以使用 `.check()` 方法来勾选复选框,或者使用 `.uncheck()` 来取消勾选。如果目标是一个带有标签的复选框,则可以通过 `get_by_label()` 定位到该元素并执行相应操作。 ```python from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() # 打开测试页面 page.goto("https://example.com/form") # 查找名为 "Checked switch checkbox input" 的复选框并通过其标签定位 switch_checkbox = page.get_by_label("Checked switch checkbox input") # 如果未被勾选则勾选它 if not switch_checkbox.is_checked(): switch_checkbox.check() # 取消勾选已选中的复选框 if switch_checkbox.is_checked(): switch_checkbox.uncheck() browser.close() ``` 上述代码展示了如何基于标签名称找到特定的复选框,并对其进行勾选或取消勾选的操作[^3]。 #### 2. 单击改变状态 有时直接调用 `.click()` 而不是 `.check()` 或者 `.uncheck()` 更加合适,尤其是当需要触发额外的 JavaScript 事件处理器时。这种方式模仿真实用户的点击行为,可能会引起更多复杂的动态变化。 ```python page.locator("#man").click(force=True) ``` 这里强制进行了点击动作 (`force=True`) ,即使元素不可见也会尝试完成此操作。然而需要注意的是,这种方法可能导致某些情况下无法正常更改复选框的状态,正如引用提到的一个错误案例所示:“Clicking the checkbox did not change its state”[^2]。 #### 3. 验证当前状态 为了确保脚本逻辑正确无误,在实际应用过程中经常需要用到验证机制确认某个复选框是否已经被成功勾选或是处于未选中状态。这可通过内置函数如`.is_checked()` 实现: ```python if page.locator("#agree_terms").is_checked(): print("Terms agreed.") else: print("Please agree to terms before proceeding.") ``` 这段简单的条件判断可以帮助我们更好地控制程序流程[^4]。 #### 4. 综合示例 - 表单提交前准备 下面给出一个完整的例子,演示在一个表单填写场景下如何综合运用以上技术要点去设置多个字段值包括文本域、单选项及多组复选项等。 ```python from playwright.sync_api import sync_playwright def run_example(): with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context() # 开始新的页面实例 page = context.new_page() try: # 导航至指定URL地址 page.goto('http://localhost:7000') # 设置姓名为John Doe name_field = page.locator('#name') name_field.fill('John Doe') # 性别选择男性的单选钮 male_radio = page.locator('[value="male"]') if not male_radio.is_checked(): male_radio.click() # 同意条款协议复选框 agreement_box = page.locator('#accept_terms') if not agreement_box.is_checked(): agreement_box.check() # 提交整个表格数据 submit_button = page.locator('#submit_form') submit_button.click() finally: # 清理资源关闭浏览器连接 browser.close() run_example() ``` 在这个综合性范例里涵盖了从基本的信息录入直到最后的动作触发全过程,充分体现了PlayWright的强大之处及其灵活性[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值