zoukankan      html  css  js  c++  java
  • Selenium 7

    本文作者官网 白月黑羽教Python


    请点击打开这个网址

    并且按F12,观察HTML的内容

    常见的选择框包括: radio框、checkbox框、select框

    radio框


    点击这里,边看视频讲解,边学习以下内容

    radio框选择选项,直接用WebElement的click方法,模拟用户点击就可以了。

    比如, 我们要在下面的html中:

    • 先打印当前选中的老师名字
    • 再选择 小雷老师
    <div id="s_radio">
      <input type="radio" name="teacher" value="小江老师">小江老师<br>
      <input type="radio" name="teacher" value="小雷老师">小雷老师<br>
      <input type="radio" name="teacher" value="小凯老师" checked="checked">小凯老师
    </div>
    

    对应的代码如下

    # 获取当前选中的元素
    element = wd.find_element_by_css_selector(
      '#s_radio input[checked=checked]')
    print('当前选中的是: ' + element.get_attribute('value'))
    
    # 点选 小雷老师
    wd.find_element_by_css_selector(
      '#s_radio input[value="小雷老师"]').click()
    
    

    checkbox框


    点击这里,边看视频讲解,边学习以下内容

    对checkbox进行选择,也是直接用 WebElement 的 click 方法,模拟用户点击选择。

    需要注意的是,要选中checkbox的一个选项,必须 先获取当前该复选框的状态,如果该选项已经勾选了,就不能再点击。否则反而会取消选择。

    比如, 我们要在下面的html中:选中 小雷老师

    <div id="s_checkbox">
      <input type="checkbox" name="teacher" value="小江老师">小江老师<br>
      <input type="checkbox" name="teacher" value="小雷老师">小雷老师<br>
      <input type="checkbox" name="teacher" value="小凯老师" checked="checked">小凯老师
    </div>
    

    我们的思路可以是这样:

    • 先把 已经选中的选项全部点击一下,确保都是未选状态
    • 再点击 小雷老师

    示例代码

    # 先把 已经选中的选项全部点击一下
    elements = wd.find_elements_by_css_selector(
      '#s_checkbox input[checked="checked"]')
    
    for element in elements:
        element.click()
    
    # 再点击 小雷老师
    wd.find_element_by_css_selector(
      "#s_checkbox input[value='小雷老师']").click()
    

    select框


    点击这里,边看视频讲解,边学习以下内容

    radio框及checkbox框都是input元素,只是里面的type不同而已。

    select框 则是一个新的select标签,大家可以对照浏览器网页内容查看一下

    对于Select 选择框, Selenium 专门提供了一个 Select类进行操作。

    Select类 提供了如下的方法

    • select_by_value

    根据选项的 value属性值,选择元素。

    比如,下面的HTML,

    <option value="foo">Bar</option>
    

    就可以根据 foo 这个值选择该选项,

    s.select_by_value('foo')
    

    • select_by_index

    根据选项的 次序(从0开始),选择元素


    • select_by_visible_text

    根据选项的 可见文本,选择元素。

    比如,下面的HTML,

    <option value="foo">Bar</option>
    

    就可以根据 Bar 这个内容,选择该选项

    s.select_by_visible_text('Bar')
    

    • deselect_by_value

    根据选项的value属性值, 去除选中元素


    • deselect_by_index

    根据选项的次序,去除选中元素


    • deselect_by_visible_text

    根据选项的可见文本,去除选中元素


    • deselect_all

    去除选中所有元素

    Select单选框

    对于 select单选框,操作比较简单:

    不管原来选的是什么,直接用Select方法选择即可。

    例如,选择示例里面的小雷老师,示例代码如下

    # 导入Select类
    from selenium.webdriver.support.ui import Select
    
    # 创建Select对象
    select = Select(wd.find_element_by_id("ss_single"))
    
    # 通过 Select 对象选中小雷老师
    select.select_by_visible_text("小雷老师")
    

    Select多选框

    对于select多选框,要选中某几个选项,要注意去掉原来已经选中的选项。

    例如,我们选择示例多选框中的 小雷老师 和 小凯老师

    可以用select类 的deselect_all方法,清除所有 已经选中 的选项。

    然后再通过 select_by_visible_text方法 选择 小雷老师 和 小凯老师。

    示例代码如下:

    # 导入Select类
    from selenium.webdriver.support.ui import Select
    
    # 创建Select对象
    select = Select(wd.find_element_by_id("ss_multi"))
    
    # 清除所有 已经选中 的选项
    select.deselect_all()
    
    # 选择小雷老师 和 小凯老师
    select.select_by_visible_text("小雷老师")
    select.select_by_visible_text("小凯老师")
    
  • 相关阅读:
    Vue 项目中 ESlint 配置
    ajax、axios、fetch 对比
    vue 中 axios 使用
    NodeJS 多版本管理(NVM)
    axio 请求中参数是数组
    Python 图片文字识别
    .NET 使用 VLC 播放视频
    Python 常见问题
    SpringBoot(4) SpringBoot热部署
    SpringBoot(3) 文件上传和访问
  • 原文地址:https://www.cnblogs.com/baiyueheiyu/p/12851362.html
Copyright © 2011-2022 走看看