如果你是通过 js 来 清空 readonly 属性, 向下面这样代码:
#-*- coding:utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("file:///C:/bootstrap-datetimepicker/bootstrap-datetimepicker/demo/index.html")
js = "$('input:eq(0)').removeAttr('readonly')" # jQuery,移除属性
# js = "$('input:eq(0)').attr('readonly',false)" # jQuery,设置为false
driver.execute_script(js)
input_datetime = driver.find_element_by_xpath('/html/body/div[1]/form/fieldset/div/div[1]/input[1]')
input_datetime.send_keys("2017-09-21")
input_datetime.click()
time.sleep(5)
driver.quit()
那么我想说,这样是行不通的 , 当点击查询数据后,日期控件会自动清空,导致查询数据无效
必须要通过selenium 的各种鼠标事件,点击事件,等来操作才行。
selenium 的鼠标事件:
click(on_element=None) ——单击鼠标左键
click_and_hold(on_element=None) ——点击鼠标左键,不松开
context_click(on_element=None) ——点击鼠标右键
double_click(on_element=None) ——双击鼠标左键
drag_and_drop(source, target) ——拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
key_down(value, element=None) ——按下某个键盘上的键
key_up(value, element=None) ——松开某个键
move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标
move_to_element(to_element) ——鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置
perform() ——执行链中的所有动作
release(on_element=None) ——在某个元素位置松开鼠标左键
send_keys(*keys_to_send) ——发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素
我就不多废话了,我写了一个处理日期控件的库date_controller库,专门类解决这种日期控件(网上现在还没有解决方案),。
如果你的控件是这样:
或者其它的样式,都能解决。
库所需要的参数:
class DataRequest:
# driver: 浏览器驱动
# start_time: 要设置的开始时间 ,格式必须: 2021-01-11 12:09:34
# end_time: 要设置的结束时间 , 格式必须: 2021-01-11 17:09:34
# alert_css : 日期控件 弹出按钮的css selector
# last_year_css : 前一年 按钮的css selector
# next_year_css: 后一年 按钮的 css selector
# label_year_css: 日期控件上,年展示的label框,表示当前选中了哪一年
# day_div_css : 天选择的 表格css selector
# h_m_s_scroll_css 时,分,秒 滚轮面板的css selector
# btn_ok_css: 确定按钮
def __init__(self, driver, start_time, end_time, alert_css,
last_year_css, next_year_css, label_year_css,
last_month_css, next_month_css, label_month_css,
day_table_css,
h_m_s_scroll_css,
# hour_ul_css, min_ul_css, second_ul_css,
btn_ok_css
):
...........
........
就是传一些css selector, 因为每个控件的css都不一样。
客户端使用:
要代码的请联系我 , qq:657455400 wx:hadluo