zoukankan      html  css  js  c++  java
  • 【java+selenium3】时间控件 (九)

    1、问题描述:

          在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就有点难了。

    如图:

    2、想法:

            其实很简单,把它当做输入框来看就好了,使用selenium的sendKeys对输入框输入日期则可。

    driver.findElement(By.id("train_date")).sendKeys("2019-07-04");

    3、想法是很美好的,但是有时候实行起来却不执行,这个时候我们就要仔细去看看前端的代码了,代码如下:

    4、这个时候我们就要借助执行 js 脚本来移除readonly的属性,问题就轻轻松松解决了,代码如下:

    JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
    String js = "document.getElementById('train_date').removeAttribute('readonly')"; 
    jsExecutor.executeScript(js);//执行js

    5.整体代码实现;

    package cn.test;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;//注意不要倒错包
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class TestCase {
    
        public static void main(String[] args) {
            System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
            WebDriver driver =new ChromeDriver();
            try {
                driver.get("https://www.12306.cn/index/");
                Thread.sleep(5000);
                //执行方式
                JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
                String js = "document.getElementById('train_date').removeAttribute('readonly')"; 
                jsExecutor.executeScript(js);//执行js,将readonly属性去掉后就可以写入日期
                driver.findElement(By.id("train_date")).clear();//写入前清除数据
                driver.findElement(By.id("train_date")).sendKeys("2019-07-07");//写入期望日期
                Thread.sleep(5000);
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                System.out.println("执行结束,关闭浏览器!");
                driver.quit();
            }
        }
    }

    6.学习后总结,不足之处后续补充!

    参考博文:Java+Selenium自动化对非输入框的日历或日期控件的处理

  • 相关阅读:
    From使用post与使用get区别
    HTML 自动跳转代码
    mjpgstreamer译文
    DOCUMENT.GETELEMENTBYID使用
    查看Linux内核版本的命令
    CGI编程学习5 穿插HTML,CSS零星知识
    使用Javascript显示时间
    北京大学<Perl 循序渐进>
    html之marquee详解
    Apache支持ASP.NET方法浅析
  • 原文地址:https://www.cnblogs.com/xiaozhaoboke/p/11134281.html
Copyright © 2011-2022 走看看