• Selenium 日期控件处理


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

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

    一、点击日期控件

    常规方法,先定位到日期控件,再选择日期

    代码:

    # coding = utf-8
    from selenium import webdriver
    from time import sleep
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe'
    # 启动浏览器
    driver = webdriver.Chrome(executable_path=driverfile_path)
    driver.get(r'https://kyfw.12306.cn/otn/index/init')
    driver.maximize_window()
    driver.implicitly_wait(10)
    # 定位日期控件
    driver.find_element_by_css_selector("#from_imageClick").click()
    sleep(1)
    # 点击日期
    driver.find_element_by_css_selector(".cal>.cal-cm>div:nth-child(6)").click()
    # 退出
    sleep(5)
    driver.quit()

    二、修改日期输入框的readonly属性

    我们先来看下日期输入框的属性:

    我们可以看到日期输入框有一个readonly属性,不能输入日期也就是这个readonly属性在作怪。既然这样,那我们就通过调用js脚本来把这个readonly属性去掉,然后再输入日期。

    代码:

    # coding = utf-8
    from selenium import webdriver
    from time import sleep
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe'
    # 启动浏览器
    driver = webdriver.Chrome(executable_path=driverfile_path)
    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()
    # 输入日期
    driver.find_element_by_css_selector("#train_date").send_keys("2018-06-06")
    # 退出
    sleep(5)
    driver.quit()

    其实,我们还可以通过js来修改日期输入框的value值,达到输入日期的目的。

    代码:

    # coding = utf-8
    from selenium import webdriver
    from time import sleep
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe'
    # 启动浏览器
    driver = webdriver.Chrome(executable_path=driverfile_path)
    driver.get(r'https://kyfw.12306.cn/otn/index/init')
    driver.maximize_window()
    driver.implicitly_wait(10)
    # 先通过日期输入框的id="train_date"来定位输入框,再通过removeAttribute方法移除"readonly"属性
    js1 = 'document.getElementById("train_date").removeAttribute("readonly");'
    # 调用js脚本
    driver.execute_script(js1)
    # 通过js修改日期输入框的value值
    js2 = 'document.getElementById("train_date").value="2018-06-06";'
    driver.execute_script(js2)
    # 退出
    sleep(5)
    driver.quit()
  • 相关阅读:
    sql 查询重复数据 删除重复数据
    echarts 仪表板指针点击事件
    Java调用webservice 天气预报
    性能优化高手 一站通关从设计到交付的性能问题
    element-ui 添加空白表格
    Linux文件管理
    Linux第五周
    Linux第四周
    Linux第三周
    Linux第二周
  • 原文地址:https://www.cnblogs.com/eastonliu/p/9135387.html
Copyright © 2020-2023  润新知