经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
《最新出炉》系列初窥篇-Python+Playwright自动化测试-25-处理单选和多选按钮-中篇 - 北京-宏哥
来源:cnblogs  作者:北京-宏哥  时间:2023/11/10 10:08:41  对本文有异议

1.简介

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

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

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

3.被测页面html源代码

3.1 radio.html

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

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>测试单选</title>
  6. <style type="text/css">
  7. .button1 {
  8. background-color: #f44336;
  9. border: none;
  10. color: white;
  11. padding: 15px 32px;
  12. text-align: center;
  13. text-decoration: none;
  14. display: inline-block;
  15. font-size: 28px;
  16. margin: 20px 300px 50px 300px;
  17. text-decoration:none;
  18. color: white;
  19. }
  20. #myAnchor
  21. {
  22. text-decoration:none;
  23. color: white;
  24. }
  25. #hg
  26. {
  27. margin: 20px 300px 50px 300px;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥</a></button></br>
  33. <div id="hg">
  34. <div>
  35. <h3>复选框 checkbox</h3> 请选择喜欢的打野英雄:<br>
  36. <label><input name="checkbox1" type="checkbox" value="李白"/>李白 </label><br>
  37. <label><input name="checkbox2" type="checkbox" value="韩信"/>韩信 </label><br>
  38. <label><input name="checkbox3" type="checkbox" value="公孙离" checked="checked"/>公孙离 </label><br>
  39. <label><input name="checkbox4" type="checkbox" value="露娜"/>露娜 </label><br>
  40. </div>
  41. <div>
  42. <h3>单选框 radio</h3> 选择喜欢的打野英雄:<br>
  43. <label><input name="radio" type="radio" value="0" checked="checked"/>李白 </label><br>
  44. <label><input name="radio" type="radio" value="1"/>韩信 </label><br>
  45. <label><input name="radio" type="radio" value="2"/>露娜 </label><br>
  46. <label><input name="radio" type="radio" value="3"/>孙尚香 </label><br>
  47. </div>
  48. </div>
  49. </body>
  50. </html>

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

上图所示的就是我们最常见的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参考代码
  1. # coding=utf-8??
  2.  
  3. # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  4.  
  5. # 2.注释:包括记录创建时间,创建人,项目名称。
  6. '''
  7. Created on 2023-09-25
  8. @author: 北京-宏哥 QQ交流群:705269076
  9. 公众号:北京宏哥
  10. Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-23-处理单选和多选按钮-中篇
  11. '''
  12.  
  13. # 3.导入模块
  14. from playwright.sync_api import sync_playwright
  15.  
  16. with sync_playwright() as p:
  17. browser = p.chromium.launch(headless=False)
  18. page = browser.new_page()
  19. page.goto("C:/Users/DELL/Desktop/test/radio.html")
  20. page.wait_for_timeout(3000)
  21. # 选择点击 韩信
  22. page.locator('[value="韩信"]').click()
  23. page.wait_for_timeout(5000)
  24. # page.pause()
  25. browser.close()
5.1.3运行代码

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

2.运行代码后电脑端的浏览器的动作(可以看到默认选中“李白”,之后会点击选中“韩信”)。如下图所示:

5.2is_check() 检查操作

5.2.1代码设计

5.2.2参考代码
  1. # coding=utf-8??
  2.  
  3. # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  4.  
  5. # 2.注释:包括记录创建时间,创建人,项目名称。
  6. '''
  7. Created on 2023-09-25
  8. @author: 北京-宏哥 QQ交流群:705269076
  9. 公众号:北京宏哥
  10. Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-23-处理单选和多选按钮-中篇
  11. '''
  12.  
  13. # 3.导入模块
  14. from playwright.sync_api import sync_playwright
  15.  
  16. with sync_playwright() as p:
  17. browser = p.chromium.launch(headless=False)
  18. page = browser.new_page()
  19. page.goto("C:/Users/DELL/Desktop/test/radio.html")
  20. page.wait_for_timeout(3000)
  21. #判断 公孙离 是否被选中(html默认设置是选中的)
  22. status1 = page.locator('[value="公孙离"]').is_checked()
  23. print(status1)
  24. # 选择 露娜
  25. page.locator('[value="露娜"]').click()
  26. print(page.locator('[value="露娜"]').is_checked())
  27. page.wait_for_timeout(5000)
  28. # page.pause()
  29. browser.close()
5.2.3运行代码

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

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

5.3check()和uncheck()操作

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

5.3.1代码设计

5.3.2参考代码
  1. # coding=utf-8??
  2.  
  3. # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  4.  
  5. # 2.注释:包括记录创建时间,创建人,项目名称。
  6. '''
  7. Created on 2023-09-23
  8. @author: 北京-宏哥 QQ交流群:705269076
  9. 公众号:北京宏哥
  10. Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-23-处理单选和多选按钮-上篇
  11. '''
  12.  
  13. # 3.导入模块
  14. from playwright.sync_api import sync_playwright
  15.  
  16. with sync_playwright() as p:
  17. browser = p.chromium.launch(headless=False)
  18. page = browser.new_page()
  19. page.goto("C:/Users/DELL/Desktop/test/radio.html")
  20. page.wait_for_timeout(3000)
  21. # 选择孙尚香
  22. page.locator('[value="3"]').check()
  23. print(page.locator('[value="3"]').is_checked())
  24. page.wait_for_timeout(5000)
  25. # page.pause()
  26. browser.close()
5.3.3运行代码

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

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

5.4set_checked()操作

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

5.4.1代码设计

5.4.2参考代码
  1. # coding=utf-8??
  2.  
  3. # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  4.  
  5. # 2.注释:包括记录创建时间,创建人,项目名称。
  6. '''
  7. Created on 2023-09-25
  8. @author: 北京-宏哥 QQ交流群:705269076
  9. 公众号:北京宏哥
  10. Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-23-处理单选和多选按钮-中篇
  11. '''
  12.  
  13. # 3.导入模块
  14. from playwright.sync_api import sync_playwright
  15.  
  16. with sync_playwright() as p:
  17. browser = p.chromium.launch(headless=False)
  18. page = browser.new_page()
  19. page.goto("C:/Users/DELL/Desktop/test/radio.html")
  20. page.wait_for_timeout(3000)
  21. # 选择 韩信
  22. page.locator('[value="韩信"]').set_checked(checked=True)
  23. print(page.locator('[value="韩信"]').is_checked())
  24. page.wait_for_timeout(5000)
  25. # page.pause()
  26. browser.close()
5.4.3运行代码

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

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

5.5调用page对象

5.5.1用法
  1. page.click('[value="李白"]')
  2. page.check('[value="韩信"]')
  3. page.set_checked('[value="露娜"]', checked=True)
5.5.2代码设计

5.5.3参考代码
  1. # coding=utf-8??
  2.  
  3. # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  4.  
  5. # 2.注释:包括记录创建时间,创建人,项目名称。
  6. '''
  7. Created on 2023-09-25
  8. @author: 北京-宏哥 QQ交流群:705269076
  9. 公众号:北京宏哥
  10. Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-23-处理单选和多选按钮-中篇
  11. '''
  12.  
  13. # 3.导入模块
  14. from playwright.sync_api import sync_playwright
  15.  
  16. with sync_playwright() as p:
  17. browser = p.chromium.launch(headless=False)
  18. page = browser.new_page()
  19. page.goto("C:/Users/DELL/Desktop/test/radio.html")
  20. page.wait_for_timeout(3000)
  21. # 演示,为了看清选中,宏哥加了等待
  22. page.click('[value="李白"]')
  23. page.wait_for_timeout(5000)
  24. page.check('[value="韩信"]')
  25. page.wait_for_timeout(5000)
  26. page.set_checked('[value="露娜"]', checked=True)
  27. print(page.locator('[value="露娜"]').is_checked())
  28. page.wait_for_timeout(5000)
  29. # page.pause()
  30. browser.close()
5.5.4.运行代码

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

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

6.小结

 有没有感觉到,单选框和复选框在Playwright中使用差不多,除了宏哥前一篇中提到的报错,这一个唯一的区别,其他大致一样。好了,今天时间也不早了,宏哥就讲解和分享到这里,感谢您耐心的阅读,希望对您有所帮助。

欢迎各位体验腾讯云的Edge:https://cloud.tencent.com/developer/article/2346776

原文链接:https://www.cnblogs.com/du-hong/p/17714438.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号