Selenium python时间控件输入问题解决方案

对于时间的选择问题,查到的大部分为两种情况:

1.存在readonly属性的

2.没有readonly属性的

可直接赋值send_keys()

测试用例中刚好是没有readonly属性的

且定位不到弹窗(通过查资料可知道,直接给时间控件input属性赋值是最快捷的方法)

一开始都是奔着情况二去处理的,但一直运行不成功,总是在赋值的地方出错,反复确认了不存在iFrame,句柄也都是一样的,时间控件为input属性,且是可编辑属性,但就是总报错。

判断是否可编辑的指令为:

flag=timeInput.is_enabled()
print("时间控件是否可编辑: "+str(flag))

运行结果如下:

后来尝试用情况一的方法进行处理,但因为查到的资料里,赋值语句有点问题(可能不适合自己的用例),由于一直没考虑到查到的语句本身有问题,导致最后还是卡死在赋值上面。还好在别的地方看到正确的赋值语句,修改了赋值语句后就正常了

具体分解步骤如下:

步骤一:修改readonly属性

#下面四种方法,任选一种即可

js = "document.getElementById('dateRange_w3').removeAttribute('readonly')" # 1.原生js,移除属性
#js = "$('input[id=dateRange_w3]').removeAttr('readonly')" # 2.jQuery,移除属性
#js = "$('input[id=dateRange_w3]').attr('readonly',false)" # 3.jQuery,设置为false
#js="$(input[id=dateRange_w3]).attr('readonly','')"

步骤二:执行

driver.execute_script(js)

步骤三:清空时间输入框: clear()

步骤四:赋值

jsValue= 'document.getElementById("dateRange_w3").value="2018-11-12 至 2018-11-13"'[/code][code]driver.execute_script(jsValue)

完整流程如下(已测试通过的,为了方便调用,部分有做了封装):

运行结果可看出,时间可正常输入

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Selenium及python实现滚动操作多种方法

    selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上.滚动条是无法直接用定位工具来定位的. selenium里面也没有直接的方法去控制滚动条,这时候只能借助J了,还好selenium提供了一个操作js的方法:execute_script(),可以直接执行js的脚本. 方法一:使用js脚本直接操作 # 滚动到顶部

  • python + selenium 刷B站播放量的实例代码

    B站UP主的主要收益来源(播放量获取的奖励.用户充电.广告等等) 首先做up主最直接的就是做视频,当你的粉丝过1000或者视频总播放超过10万时可以申请创造激励,申请创造激励之后,你的原创视频播放会给你带来收益,平均1000播放3元左右,根据你视频的质量上下浮动,如果你的视频被顶上首页那很自然的你的视频你会获得大量的流量,当然视频的点赞投币都会影响视频被顶上首页的概率. python selenium 模块 selenium模块是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏

  • python3+selenium获取页面加载的所有静态资源文件链接操作

    软件版本: python 3.7.2 selenium 3.141.0 pycharm 2018.3.5 具体实现流程如下,废话不多说,直接上代码: from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.desired_capabilities import DesiredCapabilities d = Desired

  • 基于selenium及python实现下拉选项定位select

    1.Select元素 2.定位select 方法一:二次定位 先定位 select 框,再定位 select 里的选项 但有时候选项是无法定位的,所以不是很好用 方法二:直接定位 定位到 select 后,下方查看元素属性地方,点 select 标签前面的+号或者箭头,就可以展开里面的选项内容了. 自己写 xpath 定位或者 css,一次性直接定位到 option 上的内容. 方法三:Select 模块(index)点位 1.先要导入 select 方法: from selenium.webd

  • python+selenium+chrome批量文件下载并自动创建文件夹实例

    实现效果:通过url所绑定的关键名创建目录名,每次访问一个网页url后把文件下载下来 代码: 其中 data[i][0].data[i][1] 是代表 关键词(文件保存目录).网站链接(要下载文件的网站) def getDriverHttp(): for i in range(reCount): # 创建Chrome浏览器配置对象实例 chromeOptions = webdriver.ChromeOptions() # 设定下载文件的保存目录为d盘的tudi目录, # 如果该目录不存在,将会自

  • Python selenium 自动化脚本打包成一个exe文件(推荐)

    目标 打包Python selenium 自动化脚本(如下run.py文件)为exe执行文件,使之可以直接在未安装python环境的windows下运行 run.py文件源码: 文件路径:D:\gongcheng 注:chromedriver.exe 文件在D:\gongcheng目录下 #!/usr/bin/python3 # encoding:utf-8 from selenium import webdriver import time as t brw = webdriver.Chrom

  • python selenium 执行完毕关闭chromedriver进程示例

    因为使用多次以后发现进程中出现了很多chromedriver的残留,造成卡顿,所以决定优化一下. 这个问题困扰了楼主很久,百度谷歌查来查去都只有java,后面根据java和selenium结合看找出了python如何执行完把chromedriver进程关闭 Python的话控制chromedriver的开启和关闭的包是Service from selenium.webdriver.chrome.service import Service 创建的时候需要把chromedriver.exe的位置写

  • Python3爬虫中Selenium的用法详解

    Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击.下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬.对于一些JavaScript动态渲染的页面来说,此种抓取方式非常有效.本节中,就让我们来感受一下它的强大之处吧. 1. 准备工作 本节以Chrome为例来讲解Selenium的用法.在开始之前,请确保已经正确安装好了Chrome浏览器并配置好了ChromeDriver.另外,还需要正确安装好Python的Selenium库,详细的安装和配置过程

  • python上selenium的弹框操作实现

    selenium之弹框操作 1,分类 弹框类型自见解分为四种: 1,页面弹框 2,警告提示框(alert) 3,确认消息框(confirm) 4,提示消息对话(prompt) 提示: selenium 提供switch_to_alert()方法定位到 alert/confifirm/prompt对话框. 2,操作 1,页面弹框 页面弹框是属于HTML里面的元素,它是由用户在操作页面的时候在本页面弹出的.所以科研直接在页面上定位到 步骤: 1,用户操作后,弹出页面弹框 2,直接定位弹框元素,进行操

  • Selenium python时间控件输入问题解决方案

    对于时间的选择问题,查到的大部分为两种情况: 1.存在readonly属性的 2.没有readonly属性的 可直接赋值send_keys() 测试用例中刚好是没有readonly属性的 且定位不到弹窗(通过查资料可知道,直接给时间控件input属性赋值是最快捷的方法) 一开始都是奔着情况二去处理的,但一直运行不成功,总是在赋值的地方出错,反复确认了不存在iFrame,句柄也都是一样的,时间控件为input属性,且是可编辑属性,但就是总报错. 判断是否可编辑的指令为: flag=timeInpu

  • python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例

    QTimer控件介绍 如果在应用程序中周期性地进行某项操作,比如周期性的检测主机的cpu值,则需要用到QTimer定时器,QTimer类提供了重复和单次的定时器,要使用定时器,需要先创建一个QTimer实例,将其Timeout信号连接到槽函数,并调用start(),然后,定时器,会以恒定的间隔发出timeout信号 当窗口的控件收到Timeout信号后,他就会停止这个定时器,这是在图形用户界面中实现复杂工作的一个典型用法,随着技术的进步,多线程在越来越多的平台上被使用,QTimer对象会被替代掉

  • python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例

    PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过setDisplayFormat()函数来设置显示的日期时间格式 QDateTimeEdit类中常用方法 方法 描述 setDisplayFormat 设置日期的时间格式 yyyy:代表年份,用4为数表示 MM:代表月份,取值范围01-12 dd:代表日,取值范围01-31 HH:代表小时,取值范围0

  • Android基于CountDownView的时间控件扩展

    首先,新年的一年里祝大家,心想事成,鸡年大吉.去年的时候,我们做时间控件的时候一直遗留一个问题那就是正计时控件一直没有好的解决方案,我们很想把CountDownView既支持正计时又能支持倒计时.基于这个想法,便有了今天这篇文章,原理不在介绍,其实很简单,主要是我们知道怎么用,此控件的优点有: * 实现了正计时倒计时的统一 * 优化了Adapter,不再绑定控件Id * 一个属性实现正倒计时 * 不在为具体的时间属性设置别名 具体用法 1.xml文件 属性 app:isCountUp="fals

  • layui时间控件选择时间范围的实现方法

    解决layui时间控件清空之后无法正常使用的问题,以及时间范围的选择 共有两种解决方式: 方式一(layui 1.x): html代码: <div class="layui-inline"> <div class="layui-input-inline"> <input type="text" name="start_time" class="layui-input" id=&

  • vant时间控件使用方法详解

    本文实例为大家分享了vant时间控件的使用方法,供大家参考,具体内容如下 代码: <template> <div class="shoukuan"> <!-- 头部公共搜索框 --> <tabbar title="添加团队活动"></tabbar> <div class="con"> <van-cell-group> <van-field v-model=&

  • python tkinter控件treeview的数据列表显示的实现示例

    目录 素材文件 版本一实现的代码: 解决思路 改进后代码实现 新的想法 素材文件 result.txt result2.txt result.txt文件的数据来源是爬取猫眼电影前一百名的电影,而result2.txt文件只不过是内容上把result.txt的内容复制几十次,使其数据足够多,现截选如下: {"排名": "1", "片名": "霸王别姬", "主演": "张国荣,张丰毅,巩俐"

  • bootstrap时间控件daterangepicker使用方法及各种小bug修复

    双日历时间段选择插件 - daterangepicker是bootstrap框架后期的一个时间控件,可以设定多个时间段选项,也可以自定义时间段,由用户自己选择起始时间和终止时间,时间段的最大跨度可以在程序里设定. 一.引用 daterangepicker依托monent.js 和jquery使用.所以在使用中在引入daterangepicker之前必须引入monent.js和jquery以及bootstrap. <script type="text/javascript" src

  • BootStrap的双日历时间控件使用

    这段时间看了下bootstrap的时间控件,发现使用起来还是很简单的,趁着有时间的时候整理了一下,方便自己以后忘记的时候查阅... 废话不多说先上效果图   接下来是代码实现 第一步当然是导入css.js之类的文件啦 <link href="assets/css/icons.css" rel="external nofollow" rel="stylesheet" /> 后面那个时期样式图片样式 <link href="

  • bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享

    1.bootstrap-table 单击单行选中 $('#gzrwTable').on('click-row.bs.table', function(e, row, $element) { $('.success').removeClass('success');// 清除前一次操作已选中行的选中状态 $($element).addClass('success');// 选中行添加选中状态 }); 2.bootstrap-table 获取选中行信息 function getSelectedRow

随机推荐