在WEB测试时,我们会碰到需要输入日期的情况,如果输入框能直接输入,那最好不过了。但是很多时候,输入框是不可输入的,必须的点击日期控件才行。

现在就来聊聊对日期控件的两种操作方法,我们以12306网站订票页为例,

selenium之时间日期控件的处理_html

 

代码如下:

# -*- coding: utf-8 -*-

"""
@author: lucas
@Function:
@file: dateSelect.py
@time: 2021/8/24 2:24 下午
"""

import unittest

from selenium import webdriver
from time import sleep


class DateSelect(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()

def test_click_date(self):
driver = self.driver
driver.get(r'https://kyfw.12306.cn/otn/index/init')
driver.maximize_window()
driver.implicitly_wait(10)

# 先通过日期输入框的id="train_date"来定位输入框,再通过removeAttribute方法移除"readonly"属性
js = 'document.getElementById("train_date").removeAttribute("readonly");'
# 调用js脚本
driver.execute_script(js)
# 清空默认值
driver.find_element_by_css_selector("#train_date").clear()
sleep(2)
# 两种写法,第一种通过定位元素,用send_keys去改值
# 输入日期
driver.find_element_by_css_selector("#train_date").send_keys("2021-12-25")
print driver.find_element_by_css_selector("#train_date").get_attribute('value')
# 第二种,通过js修改日期输入框的value值
# js2 = 'document.getElementById("train_date").value="2019-02-05";'
# driver.execute_script(js2)
sleep(5)

def tearDown(self):
self.driver.quit()


if __name__ == "__main__":
unittest.main()