Selenium基础:Selenium操作下拉菜单

发表于:2023-4-26 09:36

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

 作者:测试达人汪    来源:知乎

  页面中的<select></select>标签,就代表该元素是一个下拉菜单。
  1、使用Selenium中的Select类来处理下拉菜单(推荐)
  可以使用Select类中提供的方法来操作页面中的下拉菜单。
  操作步骤
  # 1.导入包Select类
  from selenium.webdriver.support.select import Select
  # 2.定位下拉菜单元素
  # 3.把定位的下拉菜单元素存储到Select类中
  select = Select(下拉菜单元素)
  # 4.1 通过value属性来选择,option标签的一个属性值
  select.select_by_value('属性值')
  # 4.2 通过选项索引(index)值选择 索引从0开始
  select_by_index(索引值)
  # 4.3 通过选项名称选择
  select_by_visible_text(选择名称)
  示例:
  页面代码片段
  <!DOCTYPE html>
  <html lang="zh-cn">
  <head>
      <meta charset="UTF-8">
  </head>
  <body>
  <select name="selecta" id="selectA">
      <option value="bj">A北京</option>
      <option value="sh">A上海</option>
      <option value="gz">A广州</option>
      <option value="cq">A重庆</option>
  </select>
  </body>
  </html>
  脚本代码:
  """
  1.学习目标:
      掌握selenium中Select类使用
  2.语法(操作步骤)
      2.1导入Select类
      2.2 定位下拉框的select标签
      2.3 使用Select类提供的方法选择选项
          2.3.1 通过选项的value值选择
              select_by_value("value属性值")
          2.3.2 通过选项索引值选择 索引从0开始
              select_by_index(索引值)
          2.3.3 通过选项名称选择
              select_by_visible_text(选择名称)
  3.需求
      在页面中,使用Select类操作下拉框
  """
  # 1.导入selenium
  from selenium import webdriver
  from time import sleep
  import os
  from selenium.webdriver.support.select import Select
  # 2.打开浏览器
  driver = webdriver.Chrome()
  # 3.打开页面
  url = "file:///" + os.path.abspath("./3.html")
  driver.get(url)
  sleep(2)
  # 4.使用Select类操作下拉框
  # 4.1 定位下拉框标签
  selectA = driver.find_element_by_id("selectA")
  # 4.2 通过Select类选择选项
  # 创建下拉框对象
  # Select(定位下拉框的元素--select标签元素)
  select = Select(selectA)
  # 通过value值选择选项(选择上海)
  select.select_by_value("sh")
  sleep(2)
  # 通过index值选择选项,索引从0开始(选择广州)
  select.select_by_index(2)
  sleep(2)
  # 通过text值选择选项(选择北京)
  select.select_by_visible_text("A北京")
  sleep(2)
  # 5.关闭浏览器
  driver.quit()
  2、下拉菜单对象的其他操作(了解)
  调用方法选择下拉框中的选项:
  取消选择:
  示例:
  同上边示例,具体看获得的select下拉菜单元素对象的操作。
  # 1.导入selenium
  from selenium import webdriver
  from time import sleep
  import os
  from selenium.webdriver.support.select import Select
  # 2.打开浏览器
  driver = webdriver.Chrome()
  # 3.打开页面
  url = "file:///" + os.path.abspath("./3.html")
  driver.get(url)
  sleep(2)
  # 4.使用Select类操作下拉框
  # 4.1 定位下拉框标签
  selectA = driver.find_element_by_id("selectA")
  # 4.2 通过Select类选择选项
  # 创建下拉框对象
  # Select(定位下拉框的元素--select标签元素)
  select = Select(selectA)
  """
  我们就以first_selected_option举个例子,
  其他的操作同理,自己尝试。
  """
  # 5.下拉框元素对象的操作
  # 下拉框对象直接调用操作
  # 5.1 打印下拉框第一个已选选项
  print("打印第一个已选选项", select.first_selected_option)
  # 5.2 查看第一个已选选项对象的方法
  print(dir(select.first_selected_option))
  # 5.3 通过上一步,我们查看选项对象有一个text方法
  # 是获取选项的名称
  print(select.first_selected_option.text)  # A北京
  # 6.关闭浏览器
  driver.quit(
  3、通过元素二次定位方式操作下拉菜单(重点)
  了解元素二次定位
  先定位下拉菜单,再定位菜单中的具体元素,对下拉菜单进行二次定位。
  类似于XPath,css_selector层级定位。
  在实际测试过程中,一个页面可能有多个属性基本相同的元素,如果要定位到其中的一个,这时候可以使用层级定位或者元素的二次定位。先定位到父元素,然后再通过父元素定位子孙元素。
  示例:
  页面代码片段
  <!DOCTYPE html>
  <html lang="zh-cn">
  <head>
      <meta charset="UTF-8">
  </head>
  <body>
  <select name="selecta" id="selectA">
      <option value="bj">A北京</option>
      <option value="sh">A上海</option>
      <option value="gz">A广州</option>
      <option value="cq">A重庆</option>
  </select>
  </body>
  </html>
  脚本代码:
   """
  1.学习目标:
      掌握二次定位的方法
  2.语法(操作步骤)
      2.1 定位父标签
      2.2 通过父标签定位子标签
  3.需求
      在页面中,使用二次定位方法,操作下拉菜单
  4.总结
      二次定位:通过元素找另外元素。
      和xpath,css_selector层级定位类似。
      除了元素的基本操作外,元素也可以定位其他元素。
      元素.click()/clear()/send_keys()/find_element_xxx
      注意:二次定位不止使用在下拉菜单操作中。
  """
  # 1.导入selenium
  from selenium import webdriver
  from time import sleep
  import os
  # 2.打开浏览器
  driver = webdriver.Chrome()
  # 3.打开页面
  url = "file:///" + os.path.abspath("./3.html")
  driver.get(url)
  sleep(2)
  # 4.二次定位操作下拉菜单
  # 4.1 先定位父级元素--select标签元素
  select = driver.find_element_by_name("selecta")
  # 4.2 通过select标签元素定位option子标签
  option = select.find_element_by_css_selector("option[value='gz']")
  # 4.3 点击选择的选项
  option.click()
  sleep(2)
  # 5.关闭浏览器
  driver.quit()
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号