python-UI自动化

  • 1.0 selenium工具介绍
  • 2.0 selenium环境搭建
  • 3.0 selenium常见8大元素定位
    • 3.1 selenium通过By定位元素
    • 3.2 selenium通过JS定位元素
    • 3.3 JS处理浏览器滚动条
    • 3.4 JS 处理日历控件(删除 `readonly` 属性)
      • 3.4.1 参考代码
  • 结尾

1.0 selenium工具介绍

1.0 selenium工具介绍

2.0 selenium环境搭建

2.0 selenium环境搭建

3.0 selenium常见8大元素定位

3.0 selenium - webdriver常见8大元素定位

3.1 selenium通过By定位元素

3.1 selenium通过By定位元素

3.2 selenium通过JS定位元素

3.2 selenium通过JS定位元素

3.3 JS处理浏览器滚动条

3.3 JS处理浏览器滚动条

3.4 JS 处理日历控件(删除 readonly 属性)

日历控件是我们在自动化中常见的场景之一,有些日期输入框是可以输入的,有些不能。

原因是因为日历控件上的readonly属性引起的。

下面我们以ECShop管理后台为例,来解决日历控件上的readonly属性问题。

处理的思路:

  1. 通过JS去掉readonly属性;

    根据JS定位元素的所在位置,然后用removeAttribute(属性名称)方法删除标签对应的属性。

  2. 通过定位日期输入框,输入日期内容。

    输入日期前,一般日期控件都会有默认的日期显示,所以要先清空输入框的内容。通过clear()方法清除后再输入内容。

    2.1. 使用常见的8大元素定位输入日期内容,

    这里就不展开细讲selenium的8大元素定位,详情点击链接:常见的8大元素定位学习。

    对应代码如下:

    2.2. 使用JS定位输入日期内容,其实不难,只要将value属性改变对应值就可以了。

3.4.1 参考代码

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://192.168.0.110/ecshop/admin/privilege.php?act=login')
# 登录操作
driver.find_element_by_name('username').send_keys("admin")
driver.find_element_by_name('password').send_keys("a1234567")
driver.find_element_by_class_name('button').click()# 点击夺宝奇兵操作
driver.switch_to.frame(driver.find_element_by_id('menu-frame'))
sleep(0.2)
driver.find_element_by_css_selector('#menu-ul > li:nth-child(2) > ul > li:nth-child(1) > a').click()
driver.switch_to.default_content()
sleep(0.2)# 点击添加夺宝奇兵
driver.switch_to.frame(driver.find_element_by_id('main-frame'))
sleep(0.2)
driver.find_element_by_css_selector('body > h1 > span.action-span > a').click()
sleep(0.1)# 去除日期上readonly属性
js_del_readonly = 'document.getElementById("start_time_id").removeAttribute("readonly");'
# 执行JS脚本
driver.execute_script(js_del_readonly)
# 定位开始日期输入框元素
start_time = driver.find_element_by_css_selector('#start_time_id')
# 清除输入框文本内容
start_time.clear()
# 输入对应值的日期
start_time.send_keys("2021-02-11 00:00")# 使用js定位元素并清空内容
js_clear_time = 'document.getElementById("start_time_id").value="";'
# 执行JS脚本
driver.execute_script(js_clear_time)
# 使用js定位元素并输入日期内容
js_write_time = 'document.getElementById("start_time_id").value="2021-02-11 00:00";'
# 执行JS脚本
driver.execute_script(js_write_time)
# 关闭浏览器
sleep(3)
driver.quit()

结尾

又到了习惯性的文章结尾,如果你觉得文章对你有帮助,请动起你们的小手手点下赞(大拇指)哈(一键三连更好),Thanks♪(・ω・)ノ。

【基于python实现UI自动化】3.4 JS 处理日历控件(删除 readonly 属性)相关推荐

  1. python时间控件readonly属性_Selenium2+python自动化----js处理日历控件(修改readonly属性)...

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  2. python时间控件readonly属性_人生苦短,我学python之python+selenium js处理日历控件(修改readonly属性)...

    转载于 上海-悠悠的博客 前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性 ...

  3. 艺赛旗(RPA)selenium 利用 js 处理日历控件

    艺赛旗 RPA8.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 详细内容请参看艺赛旗官网支持栏目:RPA社区 点击链接 ...

  4. Python+selenium自动化-js处理日历控件(修改readonly属性)

    前言 今天写自动化脚本的时候遇到一个需要更改日期的控件,不想费劲巴拉的去找日历的定位,但是又没办法直接输入我想输的日期时间,想了会儿之后决定用js解决日历控件 基本思路:先用js去掉readonly属 ...

  5. js给input控件添加onkeypress属性

    js给input控件添加onkeypress属性 在前台直接添加onkeypress可以实现. <ul class="r1"><li><span> ...

  6. Selenium2+python自动化25-js处理日历控件(修改readonly属性)

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  7. pythongui日历控件_Selenium2+python自动化25-js处理日历控件(修改readonly属性)

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  8. python时间控件readonly属性_13-js处理日历控件(修改readonly属性)

    [TOC] **前言** 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题 ...

  9. python+uiautomator2 UI自动化

    python+uiautomator2 UI自动化 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库. 其底层基于Google uiautomator,Goo ...

最新文章

  1. 资源 | 2018年值得关注的200场机器学习会议(建议收藏)
  2. JScript多语言语法加亮引擎显示(代码精简)
  3. MySQL 3.23 中文参考手册
  4. 配置文件加载位置||外部配置加载顺序||自动配置原理
  5. asp程序错误详细说明例表
  6. linux平台 一个简单的helloworld静态库的制作与使用
  7. tail | grep引起的内存升高【对比三天数据】
  8. delphi中combobox键值对
  9. Cloud for Customer的shell布局介绍
  10. jvm锁_JVM如何处理锁
  11. 认识计算机系统反思,《计算机系统组成》教学反思
  12. java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion
  13. JVM虚拟机-Class文件简介
  14. JAVA加勒比_【JAVA】synchronized关键字
  15. 大学生网页设计课程大作业1
  16. 学计算机的写论文题目,经典本科计算机论文选题 本科计算机论文题目怎样取...
  17. 通达OA2013完美平台补丁以及手机短信服务配置
  18. 在线客服系统|物流行业解决方案——助力企业构建物流行业新一体化模式
  19. 写个.net开发者的Linux迁移指南
  20. 百度网盘下载提速方法(更新于2020年6月)

热门文章

  1. 抓取Systrace方法汇总
  2. 视频会议行业一路飙红 是什么在成就?
  3. css3中使用calc()计算宽高
  4. 【维生素C语言】第十章 - 指针的进阶(上)
  5. Kali系统目录结构介绍2021
  6. 罗剑锋透视HTTP协议学习笔记---24 | 固若金汤的根本(上):对称加密与非对称加密
  7. Centos7 安装 机器学习环境(PIP + Python3.7 + Cython + Jupyter Notebook + Docker + 虚拟机网络环境)
  8. Nginx的5大应用场景
  9. 比尔·盖茨流行病警告未被采纳?为新冠流行埋下伏笔
  10. 面向对象设计的七大原则 (包括SOLID原则)