• python selenium 日期控件定位


    在做自动化时经常会遇到各种各样的时间选择框(如下图),那么如何去精准选择想要的时间呢?

     如果需要一个一个去点击,那肯定非常不稳定,也很难去选择时间跨度大的日期和精准日期。

    这个时候我们就需要用到万能的JS了,一般日期框都是只读属性,通过JS将只读属性去掉,就可以直接 send_keys()输入时间即可

    这里给个示例

    # js = "document.getElementById('txtBeginDate').removeAttribute('readonly')"  # 1.原生js,移除属性
    # js = "$('input[id=txtBeginDate]').removeAttr('readonly')"  # 2.jQuery,移除属性
    # js = "$('input[id=txtBeginDate]').attr('readonly',false)"  # 3.jQuery,设置为false
    js = "$('input[id=txtBeginDate]').attr('readonly','')"  # 4.jQuery,设置为空(同3)
    driver.execute_script(js)
    driver.find_element_by_id('txtBeginDate').send_keys('2016-08-24')
    

    但是一般的日期输入框很少有ID属性,document一共有这几种查找方式(见下图),可以在console调试,如果能找到即可将只读属性去掉

    但是如果通过以上方式都无法找到,该怎么处理呢?

    我们可以通过 addAttribute 或者 setAttribute 给日期添加元素属性,再使用JS将只读属性去掉即

     def addAttribute(self, selector, attributeName, value):
            '''
            封装向页面标签添加新属性的方法
            调用JS给页面标签添加新属性,arguments[0]~arguments[2]分别
            会用后面的element,attributeName和value参数进行替换
            添加新属性的JS代码语法为:element.attributeName=value
            比如input.name='test'
            '''
            ele = self.find_element(selector)
            self.driver.execute_script("arguments[0].%s=arguments[1]" % attributeName, ele, value)
    
    #补充说明
    #ele:元素定位
    #attributeName:设置属性名
    #value:设置属性值
    完整代码实现
    def send_create_time(self):
        """输入创建时间"""
        #给日期控件添加ID属性并移除只读属性
        self.addAttribute(data['create_time'], 'id', 456789)
        js = "document.getElementById('456789').removeAttribute('readonly')"
        self.execute_script(js)
        return self.find_element(data['create_time']).send_keys('2020/11/15 00:00:00 - 2020/12/15 00:00:00')
    

      

    
    

    补充说明:

    有些使用send_keys()输入时间但是提交请求的时候发现并没有传参时间,这个可能是输入的时间格式不对,可以在页面上手动调试,将只读属性去掉并发送请求,如果接口有传参说明可以。

    不行的话可以先手动选择时间在复制粘贴即可

     上图我输入非时间格式接口请求是没有传时间参数的,所以要保证传参正确

  • 相关阅读:
    linux升级node版本
    mysql视图
    mysql全文本搜索
    mysql数据处理函数
    mysql数据分组
    mysql组合查询
    Django添加生产环境配置
    费用保险单,如何失焦时自动补零
    div+css滚动条
    phpadmin导入数据提示文件最大限制的修改方法
  • 原文地址:https://www.cnblogs.com/5566yesongqiao/p/14140535.html
Copyright © 2020-2023  润新知