• Python+Selenium学习--定位一组对象


    场景

    从上一节的例子中可以看出,webdriver可以很方便的使用find_element方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用find_elements方法。

    定位一组对象一般用于以下场景:

    • 批量操作对象,比如将页面上所有的checkbox都勾上
    • 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的checkbox,然后选择最后一个

    代码

    S6.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form enctype="multipart/form-data">
            <div>
                <input type="text" name="user" />
                <p>请选择性别:</p>
                男:<input type="radio" name="gender" value="1"  />
                女:<input type="radio" name="gender" value="2" checked="checked"/>
                Alex:<input type="radio" name="gender" value="3"/>
                <p>爱好</p>
                篮球:<input type="checkbox" name="favor"  value="1" />
                足球:<input type="checkbox" name="favor"  value="2" checked="checked" />
                皮球:<input type="checkbox" name="favor"  value="3" />
                台球:<input type="checkbox" name="favor"  value="4" checked="checked"/>
                网球:<input type="checkbox" name="favor"  value="5" />
                <p>上传文件</p>
                <input type="file" name="fname"/>
            </div>
    
            <input type="submit" value="提交" />
            <input type="reset" value="重置" />
        </form>
    </body>
    </html>
    

      定位一组对象.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    '''
    Created on 2018/5/9 11:35
    @author: Jeff Lee
    @file: 定位一组对象.py
    '''
    from selenium import webdriver
    from time import sleep
    import os
    
    if'HTTP_PROXY'in os.environ:
        del os.environ['HTTP_PROXY']
    
    dr = webdriver.Firefox()
    file_path ='file://'+ os.path.abspath('s6.html')
    print (file_path)
    dr.get(file_path)
    
    ## 选择所有的checkbox并全部勾上
    checkboxes = dr.find_elements_by_css_selector('input[type=checkbox]')
    for checkbox in checkboxes:
        if not checkbox.get_attribute('checked'):
            checkbox.click()
    sleep(1)
    dr.refresh()
    sleep(2)
    
    # 打印当前页面上有多少个checkbox
    print (len(dr.find_elements_by_css_selector('input[type=checkbox]')))
    
    # 选择页面上所有的input,然后从中过滤出所有的checkbox并勾选之
    inputs = dr.find_elements_by_tag_name('input')
    for input in inputs:
            if input.get_attribute('type') == 'checkbox':
                if not input.get_attribute('checked'):
                    input.click()
    sleep(1)
    
    # 把页面上最后1个checkbox的勾给去掉
    dr.find_elements_by_css_selector('input[type=checkbox]').pop().click()
    sleep(1)
    
    dr.quit()
    

      

  • 相关阅读:
    halcon 如何把一个region截取出来保存为图像
    Halcon学习(三)赋值与数组操作
    sort_region——对区域进行排序
    Halcon函数【转】
    Halcon算子之shape_trans,用于变换区域的形状
    Halcon学习之八:图像区域叠加与绘制
    Halcon学习之七:改变图像的现实方式和大小
    Halcon学习之六:获取Image图像中Region区域的特征参数
    Halcon学习之五:有关图像的定义域的函数
    Docker Swarm redis 集群搭建
  • 原文地址:https://www.cnblogs.com/uniquefu/p/9018190.html
Copyright © 2020-2023  润新知