selenium3 + python - js处理readonly属性

前言

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

基本思路:先用js去掉readonly属性,然后直接输入日期文本内容

代码整理如下:

from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitimport time as t

driver = webdriver.Chrome()driver.maximize_window()driver.get("https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=wf")driver.implicitly_wait(10)WebDriverWait(driver,10)driver.find_element_by_id("wf_label").click()

#开始地点driver.find_element_by_id("fromStationText").clear()driver.find_element_by_id("fromStationText").send_keys("XX\n")t.sleep(3)

#到达地点driver.find_element_by_id("toStationText").clear()driver.find_element_by_id("toStationText").send_keys("XX\n")t.sleep(3)

# 去掉元素的readonly属性js = ‘document.getElementById("train_date").removeAttribute("readonly");‘driver.execute_script(js)t.sleep(3)

# 用js方法输入日期js_value = ‘document.getElementById("train_date").value="2019-06-01"‘driver.execute_script(js_value)t.sleep(3)

#js处理返程时间JS = ‘document.getElementById("back_train_date").removeAttribute("readonly");‘driver.execute_script(JS)end_js= ‘document.getElementById("back_train_date").value="2019.5.3"‘driver.execute_script(end_js)t.sleep(3)

#点击查询按钮driver.find_element_by_id("query_ticket").click()t.sleep(2)

# # 清空文本后输入值# driver.find_element_by_id("train_date").clear()# driver.find_element_by_id("train_date").send_keys("2016-12-25")

#关闭窗口driver.quit()

原文地址:https://www.cnblogs.com/Teachertao/p/10976953.html

时间: 2024-10-10 16:27:37

selenium3 + python - js处理readonly属性的相关文章

selenium3 + python - js&jquery操作处理

# 推荐学习:https://www.w3school.com.cn/js/index.asp## 下面以简书登录&注册定位元素为例"""js定位 id name class_name xpath css元素器 除了id是定位到的是单个的element元素对象,其他的都是elements返回的是list对象1.通过id获取js_id = 'document.getElementById("id的值");'2.通过CLASS获取js_class =

selenium3 + python - js 内嵌滚动处理

一.js内嵌html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"><!-- for HTML5 --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>内嵌div&

Selenium2+python自动化25-js处理日历控件(修改readonly属性)【转载】

前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用js去掉readonly属性,然后直接输入日期文本内容 一.日历控件 1.打开12306的车票查询界面,在出发日期输入框无法直接输入时间 2.常规思路是点开日历控件弹出框,从日历控件上点日期,这样操作比较烦躁,并且我们测试的重点不在日历控件上,只是想输入个时间,做下一步的操作 3.用firebug查看

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

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/js/ 前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用js去掉readonly属性,然后直接输入日期文本内容 一.日历控件 1.打开12306的车票查询界面,在出发日期输入框无法直接输入时间 2.常规思路是点开日历控件弹出框,从日历控件

js控制html元素的readonly属性

html元素假设为只读,那么其readonly="readonly",我们现在想通过js来改变readonly属性为可以输入. 初始时,两个输入框都是只读.点击change按钮后,下面的输入框可以输入了. 注意:js代码里的readOnly,O必须大写 见代码: 1 <html> 2 <head> 3 <script language="javascript"> 4 function change(){ 5 document.ge

js 控制 input标签的 readonly属性

input 标签的 readonly 属性   $('#id').attr("readonly","readonly")//将input元素设置为readonly   $('#id').removeAttr("readonly");//去除input元素的readonly属性     if($('#id').attr("readonly")==true)//判断input元素是否已经设置了readonly属性 本人喜欢如下方法

基础问题:设置radio、select、checkbox 的readonly 属性

编辑记录的时候,有时候需要禁止用户修改某些项目,常用的方法有以下两种: 1>设置表单的readonly属性问题:但是readonly属性对radio.select.checkbox这三个表单不起什么作用 2>设置表单的disabled属性问题:设置了disabled属性后,后台读取不到数据 办法:1.设置disabled属性,并把表单值存入hidden隐藏域中2.使用用jquery控制(加载页面的时候设置表单属性disabled=true,提交表单的时候设置表单属性disabled=false

selenium3+python自动化10-基本操作2(单选框、复选框、table定位)

一.前言 本次总结是对之前内容的扩充selenium3+python自动化6-基本操作总结(键盘.鼠标.select下拉框) ,包含单元框和复选框操作.table定位等内容. 二.单选框(radiobox)和复选框(checkbox)操作 1.认识单选框和复选框 html代码如下: <html> <head> <title>单选和复选</title> </head> <body> </form> <h4>单选:

js的offsetParent属性用法详解

js的offsetParent属性用法详解:此属性是javascript中较为常用的属性,对于它的良好掌握也是非常有必要的,下面就通过代码实例介绍一下它的用法,希望能够给需要的朋友带来一定的帮助.一.基本介绍:此属性可以返回距离指定元素最近的采用定位(position属性值为fixed.relative或者absolute)父级元素,如果父级元素中没有采用定位的元素,则返回body对象的引用.语法结构: obj.offsetParent 二.代码实例: <!DOCTYPE html> <