> 技术文档 > (25)python+playwright自动化处理单选和多选按钮-中

(25)python+playwright自动化处理单选和多选按钮-中


1.简介

上一篇中讲解和介绍的单选框有点多,而且由于时间的关系,决定今天讲解和分享复选框的相关知识。

2.什么是单选框、复选框?

  单选按钮一般叫raido button,就像我们在电子版的单选答题过程一样,单选只能点击一次,如果点击其他的单选,之前单选被选中状态就会变成未选中。单选按钮的点击,一样是使用click方法。多选按钮,就是复选框,一般叫checkbox,就像我们在电子版的多选答题过程一样,可以选择多个选项,多选按钮的点击,同样是使用click方法。简单地说,复选框可以允许你选择多个设置,而单选框则允许你选择一个设置。如下图所示:

 

(25)python+playwright自动化处理单选和多选按钮-中

3.被测页面html源代码

3.1 radio.html

1.准备测试练习radio.html,如下:

测试单选  .button1 { background-color: #f44336; border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 28px; margin: 20px 300px 50px 300px; text-decoration:none; color: white; } #myAnchor { text-decoration:none; color: white; } #hg { margin: 20px 300px 50px 300px; }  

复选框 checkbox

请选择喜欢的打野英雄:




单选框 radio

选择喜欢的打野英雄:




2.页面效果,如下图所示:

(25)python+playwright自动化处理单选和多选按钮-中

上图所示的就是我们最常见的radio单选框和checkbox多选框,playwright提供了一些处理单选框以及多选框的方法。

4.PlayWright选择操作

playwright提供了一些处理单选框以及多选框的方法,如下:

locator.click() 点击操作locator.check() 选中locator.uncheck() 不选中locator.set_checked() 设置选中状态locator.is_checked() 判断是否被选中

5.复选框操作

checkbox 复选框跟 radio 操作的区别在于,如果已经被选择了,再点击会被取消选中,所以不会有前面的报错(在上一篇小结中提到的报错)。以我们的html文件为例,如果李白已经被选中了再点击李白会改变状态变成不选中了,我们只点击其他的按钮不会改变其状态。

5.1click()点击操作

这里演示一下如何点击“韩信”,其实是很简单的,只需要定位到然后点击即可。

5.1.1代码设计

5.1.2参考代码

# coding=utf-8🔥from playwright.sync_api import sync_playwrightwith sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto(\"C:/Users/DELL/Desktop/test/radio.html\") page.wait_for_timeout(3000) # 选择点击 韩信 page.locator(\'[value=\"韩信\"]\').click() page.wait_for_timeout(5000) # page.pause() browser.close()

5.1.3运行代码

1.运行代码,右键Run\'Test\',查看控制台输出

5.2is_check() 检查操作

5.2.1代码设计

5.2.2参考代码

# coding=utf-8🔥from playwright.sync_api import sync_playwrightwith sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto(\"C:/Users/DELL/Desktop/test/radio.html\") page.wait_for_timeout(3000) #判断 公孙离 是否被选中(html默认设置是选中的) status1 = page.locator(\'[value=\"公孙离\"]\').is_checked() print(status1) # 选择 露娜 page.locator(\'[value=\"露娜\"]\').click() print(page.locator(\'[value=\"露娜\"]\').is_checked()) page.wait_for_timeout(5000) # page.pause() browser.close()

5.2.3运行代码

1.运行代码,右键Run\'Test\',控制台输出,如下图所示:

(25)python+playwright自动化处理单选和多选按钮-中

5.3check()和uncheck()操作

感觉check()和click的用法差不多。

5.3.1代码设计

5.3.2参考代码

# coding=utf-8🔥from playwright.sync_api import sync_playwrightwith sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto(\"C:/Users/DELL/Desktop/test/radio.html\") page.wait_for_timeout(3000) # 选择孙尚香 page.locator(\'[value=\"3\"]\').check() print(page.locator(\'[value=\"3\"]\').is_checked()) page.wait_for_timeout(5000) # page.pause() browser.close()

5.3.3运行代码

1.运行代码,右键Run\'Test\',查看控制台输出

5.4set_checked()操作

注:set_checked()需传checked 参数,参数为布尔值。

5.4.1代码设计

5.4.2参考代码

# coding=utf-8🔥from playwright.sync_api import sync_playwrightwith sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto(\"C:/Users/DELL/Desktop/test/radio.html\") page.wait_for_timeout(3000) # 选择 韩信 page.locator(\'[value=\"韩信\"]\').set_checked(checked=True) print(page.locator(\'[value=\"韩信\"]\').is_checked()) page.wait_for_timeout(5000) # page.pause() browser.close()

5.4.3运行代码

1.运行代码,右键Run\'Test\',控制台输出,如下图所示:

(25)python+playwright自动化处理单选和多选按钮-中

2.运行代码后电脑端的浏览器的动作。如下图所示:

(25)python+playwright自动化处理单选和多选按钮-中

5.5调用page对象

5.5.1用法

page.click(\'[value=\"李白\"]\')page.check(\'[value=\"韩信\"]\')page.set_checked(\'[value=\"露娜\"]\', checked=True)

5.5.2代码设计

5.5.3参考代码

# coding=utf-8🔥from playwright.sync_api import sync_playwrightwith sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto(\"C:/Users/DELL/Desktop/test/radio.html\") page.wait_for_timeout(3000) # 演示,为了看清选中,加了等待 page.click(\'[value=\"李白\"]\') page.wait_for_timeout(5000) page.check(\'[value=\"韩信\"]\') page.wait_for_timeout(5000) page.set_checked(\'[value=\"露娜\"]\', checked=True) print(page.locator(\'[value=\"露娜\"]\').is_checked()) page.wait_for_timeout(5000) # page.pause() browser.close()

5.5.4.运行代码

1.运行代码,右键Run\'Test\',控制台输出,如下图所示:

(25)python+playwright自动化处理单选和多选按钮-中

6.小结

 有没有感觉到,单选框和复选框在Playwright中使用差不多,除了前一篇中提到的报错,这一个唯一的区别,其他大致一样。