原文地址https://blog.csdn.net/galen2016/article/details/56847545
【WebDriver】調用JavaScript
一、WebDriver 提供了executeScript方法來執行JavaScript 代碼,從而對頁面元素做一些特殊操作
代碼:
- ……
- WebDriver driver = new FirefoxDriver();
- JavascriptExecutor js = (JavascriptExecutor) driver;
- js.executeScript(String script, object... args);
- ……
第一行先new一個WebDriver,第二行將Webdriver強制轉換為JavascriptExecutor,第三行執行js,參數script是要執行的js語句,后面的參數可以沒有,也可以有1個或者多個。
二、調用js實例
1、拖動頁面滾動條
- ……
- JavascriptExecutor js = (JavascriptExecutor) driver;
- js.executeScript("window.scrollTo(100,450);");
- ……
window.scrollTop()方法用於設置瀏覽器窗口滾動條的水平和垂直位置。方法的第一個參數表示水平的左間距,第二個參數表示垂直的上邊距。
2、彈出alert
- ……
- JavascriptExecutor js = (JavascriptExecutor) driver;
- js.executeScript("alert('Hello world!');");
- ……
3、向頁面中textarea 文本框輸入內容
如這個html:
- ……
- <textarea id="id" style="width: 98%" cols="50" rows="5" class="txtarea">
- </textarea>
- ……
Java代碼:
- ……
- String areaText= "Hello World";
- String js = "var sum=document.getElementById('id'); sum.value='" + areaText+ "';";
- ((JavascriptExecutor)driver).executeScript(js);
- ……
4、點擊某個元素
- ……
- //第一種方法
- JavascriptExecutor js = (JavascriptExecutor) driver;
- js.executeScript("window.document.getElementById('id').click()";
- //第二種方法
- WebElement element = driver.findElement(By.id("id"));
- js.executeScript("arguments[0].click()", element); //這里的auguments[0]就代表element
- ……
5、改變元素的屬性

上圖中的月份未選中選擇時class為“bs_times_month”,點擊某個月份后它的class會變為
“bs_times_monthBlue bs_times_monthSelected”。我們可以用js直接設置想要選中月份的class,就不用點擊了。
“bs_times_monthBlue bs_times_monthSelected”。我們可以用js直接設置想要選中月份的class,就不用點擊了。
代碼:
- ……
- List<WebElement> months = driver.findElements(By.className("bs_times_month"));
- JavascriptExecutor js = (JavascriptExecutor)driver;
- js.executeScript("arguments[0].setAttribute('class',arguments[1])",months.get(3),"bs_times_monthBlue bs_times_monthSelected");
- ……