51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1958|回复: 1
打印 上一主题 下一主题

Selenium之 搞定checkbox、radiobox

[复制链接]
  • TA的每日心情
    擦汗
    3 天前
  • 签到天数: 1042 天

    连续签到: 4 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-10-25 13:38:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    今天操作一个页面,发现尝试了很久,都没有弄成功。
      主要是checkbox和radio, 相当不好定位,定位到了却点击不到。老是报错元素不能点击。
      没办法,开始用finde_elements_by_tag_name找到input,然后对某个进行点击操作。
      后面发现,可以用发送空格的方式,而且一次成功,百发百中。
      网页上有时候遇到checkbox和radio,一般情况下这两种都是input标签,我们可以通过点击或者发送空格的方式进行选中。试验网页代码checkandradio.html:
    1. <html>
    2.   <body>
    3.   Checkbox:
    4.   <input type="checkbox" value="cv1" name="c1">
    5.   <input type="checkbox" value="cv2">
    6.   <input type="checkbox" value="cv3" name="c1">
    7.   <input type="checkbox" value="cv4">
    8.   <p>
    9.   Radio:
    10.   <input type="radio" value="rv1" name="r1">
    11.   <input type="radio" value="rv2" name="r1">
    12.   </body>
    13.   </html>
    复制代码
    定位:就是普通的input标签,按照正常的定位方式定位就可以,不再赘述。
      下面我们用selenium选中其中的checkbox(1、2)和radio1->radio2,上代码:
    1.  from selenium import webdriver
    2.   from selenium.webdriver.common.keys import Keys
    3.   from time import sleep
    4.   driver = webdriver.Firefox()
    5.   driver.maximize_window()
    6.   driver.get('file:///D:/checkboxandradio.html')
    7.   # checkbox
    8.   driver.find_element_by_xpath('//input[@value="cv1"]').click()  # click
    9.   driver.find_element_by_xpath('//input[@value="cv2"]').send_keys(Keys.SPACE)  # send space
    10.   # radio
    11.   driver.find_element_by_xpath('//input[@value="rv1"]').send_keys(Keys.SPACE)  # send space
    12.   sleep(1)
    13.   driver.find_element_by_xpath('//input[@value="rv2"]').click()  # click
    14.   sleep(1)
    15.   driver.quit()
    复制代码
    从上例可以看出我们对这种checkbox和radio,可以通过直接点击或者发送空格的方式达到选中或者反选的目的。
      检查某个框是否被选中:
    1. element.is_selected()
    复制代码
    选中和判断是否选中还有其他的方法,如模拟鼠标点击、用js选中、修改标签属性选中;用js、jQuery判断是否选中、用标签属性判断是否选中,不过针对大部分情况,以上方法足够用了。如果以上方法失效,可以考虑直接修改或获取标签属性,或者可能是其他因素如等待时间、页面遮挡等导致无法选中,可进行更多尝试。
      取人之长。有些思路还是可以借鉴的。




    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 10:58
  • 签到天数: 194 天

    连续签到: 1 天

    [LV.7]测试师长

    2#
    发表于 2021-11-3 00:41:07 | 只看该作者
    发送空格,学到了
    补一个css写法:driver.find_element_by_css("input[value='cv1']").click()
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-10 00:55 , Processed in 0.060381 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表