设置style属性为display:none,关闭时间弹框

背景:

12306时间输入框的练习,这个时间输入框是readonly属性,通过js代码先把属性删除了,再写上时间,关闭时间选择弹框。

关闭时间选择弹框的手工操作有以下这几个方法:

①输入完时间后直接按enter键就可以关闭时间弹框

②输入完时间后直接按tab键就可以关闭时间弹框

③输入完时间后直接点击“出发地” “到达地”的输入框后时间选择框也能自动关闭

④点击其他文字,例如“出发地” 、“到达地” 、“出发日期”也可以让时间弹框关闭

还有其他很多类似的方法,不再举例

验证①②想法


WebDriver driver = openBrowser("chrome");
driver.get("https://www.12306.cn/index/index.html");
//去除时间框readonly属性,方便使用sendkeys()
WebElement element = driver.findElement(By.id("train_date"));
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
javascriptExecutor.executeScript("arguments[0].removeAttribute('readonly')",element);
Thread.sleep(1000);
//清空输入框
element.clear();
Thread.sleep(1000);
//输入日期
element.sendKeys("2021-07-19");

//尝试通过按tab enter键关闭时间框
Thread.sleep(1000);
element.sendKeys(Keys.TAB);
Thread.sleep(1000);
element.sendKeys(Keys.ENTER);

结果失败了,时间选择弹框岿然不动遮盖了很多按钮!

验证③想法

         WebDriver driver = openBrowser("chrome");
        driver.get("https://www.12306.cn/index/index.html");
        Thread.sleep(1000);
        driver.manage().window().maximize();
        //去除readonly属性
        WebElement element = driver.findElement(By.id("train_date"));
        JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
        javascriptExecutor.executeScript("arguments[0].removeAttribute('readonly')",element);
        //清空输入框
        Thread.sleep(2000);
        element.clear();
        //输入时间
        Thread.sleep(2000);
        element.sendKeys("2021-07-19");

        //点击出发地输入框,看时间选择框是否关闭
        driver.findElement(By.id("fromStationText")).click();

结果失败了,时间选择弹框岿然不动遮盖了很多按钮!

验证④的想法

        WebDriver driver = openBrowser("chrome");
        driver.get("https://www.12306.cn/index/index.html");
        Thread.sleep(1000);
        driver.manage().window().maximize();
        //去除readonly属性
        WebElement element = driver.findElement(By.id("train_date"));
        JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
        javascriptExecutor.executeScript("arguments[0].removeAttribute('readonly')",element);
        //清空输入框
        Thread.sleep(2000);
        element.clear();
        //输入时间
        Thread.sleep(2000);
        element.sendKeys("2021-07-19");
        Thread.sleep(2000);
      
        //点击“出发日期”文字,看时间框是否关闭
        driver.findElement(By.xpath("/html/body/div[3]/div[2]/div/div[1]/div/div[2]/div[1]/div[1]/div[2]/label")).click();
        

       

结果失败了,时间选择弹框岿然不动遮盖了很多按钮!

全部不行!!!!

仔细观察这个时间弹框的页面源代码:

 有个时间选择框的style,这个可以控制显示还是关闭

<div class="cal-wrap" style="left: 556.5px; top: 382px; display: block;">

通过js代码关闭这个弹框

WebDriver driver = openBrowser("chrome");
driver.get("https://www.12306.cn/index/");
WebElement element=driver.findElement(By.id("train_date"));
JavascriptExecutor javascriptExecutor=(JavascriptExecutor)driver;
//拿掉readonly的属性       javascriptExecutor.executeScript("arguments[0].removeAttribute('readonly')",element);
//清楚输入框并输入时间
Thread.sleep(2000);
element.clear();
Thread.sleep(2000);
element.sendKeys("2020-10-01");
Thread.sleep(2000);
//不让时间选择框显示
WebElement element2=driver.findElement(By.xpath("//div[@class='cal-wrap']"));  
javascriptExecutor.executeScript("arguments[0].setAttribute('style','display:none')",element2);

最终实现了关闭时间弹框的诉求!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值