zoukankan      html  css  js  c++  java
  • webdriver js点击无法点击的元素

    原文地址https://blog.csdn.net/galen2016/article/details/56847545

    【WebDriver】调用JavaScript

     

    一、WebDriver 提供了executeScript方法来执行JavaScript 代码,从而对页面元素做一些特殊操作

    代码:

    [java] view plain copy
     
    1. ……  
    2. WebDriver driver = new FirefoxDriver();   
    3. JavascriptExecutor js = (JavascriptExecutor) driver;  
    4. js.executeScript(String script, object... args);  
    5. ……  
    第一行先new一个WebDriver,第二行将Webdriver强制转换为JavascriptExecutor,第三行执行js,参数script是要执行的js语句,后面的参数可以没有,也可以有1个或者多个。


    二、调用js实例
    1、拖动页面滚动条
    [java] view plain copy
     
    1. ……  
    2. JavascriptExecutor js = (JavascriptExecutor) driver;  
    3. js.executeScript("window.scrollTo(100,450);");  
    4. ……   

    window.scrollTop()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距。
    2、弹出alert
    [java] view plain copy
     
    1. ……  
    2. JavascriptExecutor js = (JavascriptExecutor) driver;  
    3. js.executeScript("alert('Hello world!');");  
    4. ……  
    3、向页面中textarea 文本框输入内容
    如这个html:
    [html] view plain copy
     
    1. ……  
    2. <textarea id="id" style=" 98%" cols="50" rows="5" class="txtarea">  
    3. </textarea>  
    4. ……  

    Java代码:
    [java] view plain copy
     
    1. ……  
    2. String areaText= "Hello World";  
    3. String js = "var sum=document.getElementById('id'); sum.value='" + areaText+ "';";  
    4. ((JavascriptExecutor)driver).executeScript(js);  
    5. ……  

    4、点击某个元素
    [java] view plain copy
     
    1. ……  
    2. //第一种方法  
    3. JavascriptExecutor js = (JavascriptExecutor) driver;    
    4. js.executeScript("window.document.getElementById('id').click()";   
    5.   
    6.   
    7. //第二种方法  
    8. WebElement element = driver.findElement(By.id("id"));    
    9. js.executeScript("arguments[0].click()", element);  //这里的auguments[0]就代表element  
    10. ……  

    5、改变元素的属性


    上图中的月份未选中选择时class为“bs_times_month”,点击某个月份后它的class会变为
    “bs_times_monthBlue bs_times_monthSelected”。我们可以用js直接设置想要选中月份的class,就不用点击了。
    代码:
    [java] view plain copy
     
    1. ……  
    2. List<WebElement> months = driver.findElements(By.className("bs_times_month"));  
    3. JavascriptExecutor js = (JavascriptExecutor)driver;  
    4. js.executeScript("arguments[0].setAttribute('class',arguments[1])",months.get(3),"bs_times_monthBlue bs_times_monthSelected");  
    5. ……  


  • 相关阅读:
    jsADS的库(待更新)
    javascript设计模式工厂方法模式
    jQuery星级评价
    邮政编码联动地址
    ADS图像缩放与剪裁(只是完成了前台的功能,传送数据到后台的功能待完成)
    ie6png透明解决(ietester的ie6有问题,原生ie6是没问题的)
    javascript设计模式桥接模式
    每一个人都应该学会执着
    防止电脑被攻击
    获取用户的IP地址的三个属性的区别
  • 原文地址:https://www.cnblogs.com/111testing/p/8689385.html
Copyright © 2011-2022 走看看