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="width: 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. ……  



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM