Selenium之 搞定checkbox、radiobox

发表于:2021-10-25 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:谢小玲    来源:知乎

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

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号