Selenium Select下拉框

发表于:2021-3-15 09:41

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

 作者:测试开发小记    来源:博客园

  在web自动化测试中,经常会遇到下拉框,对列出的选项进行选择,或者判断选择的选项,本文将介绍如何使用Selenium去操作下拉框,实现自动化测试。
  测试页面
  URL: http://sahitest.com/demo/selectTest.htm
  Select方法
  使用WebElement类的send_keys(value)方法也可以选择下拉框(select标签)的值,但它只能使用选项的value值来定位:
  self.driver.get("http://sahitest.com/demo/selectTest.htm")
  ele = self.driver.find_element_by_id('s3Id')
  print(ele.text) # 打印select所有选项值
  ele.send_keys("o2val") # 选择value=o2val 的选项
  print(ele.get_attribute("value")) # 打印所选择的value值
  结果:
  o1
  o2
  o3
      With spaces
      With nbsp
  o2val
  select类所有方法:
  ·select_by_index(index):通过选项index选择
  ·select_by_value(value):通过选项value值选择
  ·select_by_visible_text(text):过显示的文本选择
  ·deselect_by_index(index):取消选择,用于多选
  ·deselect_by_value(value):取消选择,用于多选
  ·deselect_by_visible_text(text):取消选择,用于多选
  ·deselect_all():全部取消,用于多选
  ·options:所有选项
  ·first_selected_option:第一个选择的选项(多选情况下)或者当前选择的选项(单选)
  ·all_selected_options:所有已经选择的选项
  选择
  select_by_index、select_by_value、select_by_visible_text三种方法选择
  first_selected_option.text返回当前所选择的选项值:
  self.driver.get("http://sahitest.com/demo/selectTest.htm")
  ele = self.driver.find_element_by_id('s3Id')
  selected_element = Select(ele)  # 实例化Select
  selected_element.select_by_index(1)
  # for select in selected_element.all_selected_options:
  #     print(select.text)
  print(selected_element.first_selected_option.text) # 打印当前选择的选项值
  sleep(1)
  selected_element.select_by_value("o2val")
  print(selected_element.first_selected_option.text)
  sleep(1)
  selected_element.select_by_visible_text("o3")
  print(selected_element.first_selected_option.text)
  sleep(1)
  结果:
  o1 
  o2 
  o3
  取消选择
  取消选择deselect不能用于下拉框选择,只能用于多选,即属性multiple="multiple"的select标签。
  取消选择有deselect_by_index、deselect_by_value、deselect_by_visible_text、deselect_all四种方法:
  all_selected_options返回所有已选择的选项
  self.driver.get("http://sahitest.com/demo/selectTest.htm")
  ## 多选
  ele2 = self.driver.find_element_by_id('s4Id')
  selected_element2 = Select(ele2)  # 实例化Select
  selected_element2.select_by_index(1)
  selected_element2.select_by_index(2)
  selected_element2.select_by_index(3)
  print("######")
  for select in selected_element2.all_selected_options:
      print(select.text)
  print("######")
  selected_element2.deselect_by_index(1)
  for select in selected_element2.all_selected_options:
      print(select.text)
  print("######")
  selected_element2.deselect_by_value("o2val")
  for select in selected_element2.all_selected_options:
      print(select.text)
  print("######")
  selected_element2.deselect_by_visible_text("o3")
  for select in selected_element2.all_selected_options:
      print(select.text)
  结果:
  ######
  o1
  o2
  o3
  ######
  o2
  o3
  ######
  o3
  ######

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号