selenium之时间日期控件的处理
原创
©著作权归作者所有:来自51CTO博客作者wx634e5f8a4276e的原创作品,请联系作者获取转载授权,否则将追究法律责任
在WEB测试时,我们会碰到需要输入日期的情况,如果输入框能直接输入,那最好不过了。但是很多时候,输入框是不可输入的,必须的点击日期控件才行。
现在就来聊聊对日期控件的两种操作方法,我们以12306网站订票页为例,
代码如下:
# -*- 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()