Selenium系列之--05 執行JavaScript
阿新 • • 發佈:2018-11-15
使用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);