1. 程式人生 > >Selenium系列之--05 執行JavaScript

Selenium系列之--05 執行JavaScript

使用selenium做自動化測試,有時需要執行一些JavaScript程式碼。在selenium中有Javascript類可以執行。 
import org.openqa.selenium.JavascriptExecutor; 
其中有兩個方法我們會經常遇到。 
executeScript、executeAsyncScript

method 詳情
executeScript 同步方法,用它執行js程式碼會阻塞主執行緒執行,直到js程式碼執行完畢;
executeAsyncScript 非同步方法,它不會阻塞主執行緒執行。

1. 初始化driver

通過向下轉型 JavascriptExecutor js = (JavascriptExecutor) driver; 將driver轉為JavascriptExector物件

然後再呼叫executeScript()方法來執行JS

JavascriptExecutor jse = (JavascriptExecutor)driver;  

2.直接傳入Javascript程式碼

可以直接給jse傳入javascript程式碼:

jse.executeScript("window.document.getElementById('jingshou').click()";  

3.傳入WebElement執行JS

//
WebElement element = driver.findElement(By.id("jingshou")); jse.executeScript("arguments[0].click();", element); // inputbox is a WebElement JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].value=\"北京\"", from_inpox);

// 我們指定的DIV就新增(修改)了 style {height: 1000px}的屬性
WebElement div = driver.findElemnt(By.id("myDiv"));  
jse.executeScript("arguments[0].setAttribute('style', arguments[1])", div, "height: 1000px");  

4. 滾動到指定位置

小技巧: 如何滾動到定位的元素,使用java script

// scroll to mylink
JavascriptExecutor scroll = (JavascriptExecutor) driver;
scroll.executeScript("arguments[0].scrollIntoView();", myLink);

  JavascriptExecutor js=(JavascriptExecutor)driver;
  // roll down and keep the element to the center of browser
  js.executeScript("arguments[0].scrollIntoViewIfNeeded(true);", download);

<!-- window.scrollTo(左邊距,上邊距); -->
scroll.executeScript("window.scrollTo(100,450);");

//x為水平移動的畫素、y為垂直移動畫素、location為元素位置 
//操作滾動條 
1. 垂直滾動

String scroll = "document.documentElement.scrollTop=" + "y"; 
JavascriptExecutor js=(JavascriptExecutor) driver; 
js.executeScript(scroll);

2 .水平滾動

String scroll = "document.documentElement.scrollLeft=" + "x"; 
JavascriptExecutor js=(JavascriptExecutor) driver; 
js.executeScript(scroll);

3. 滾動條式

String scroll = "document.getElementById("location").scrollLeft=x";
JavascriptExecutor js=(JavascriptExecutor)driver; 
js.executeScript(scroll);