在selenium(webdriver)中執行js
阿新 • • 發佈:2019-02-16
程式碼
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(String script, object... args);
第一行程式碼將driver強制轉換為JavascriptExecutor
第二行程式碼是執行js,引數script是要執行的js語句,可以看到第二個引數在引數型別和引數名之間有…,
在java裡,這代表這個引數可以沒有,也可以有1個或者多個。對於executeScript這個方法,取決於js語句是否需要引數。該方法返回值Boolean, Long, String, List or WebElement. 或者是 null.
示例
JavascriptExecutor js = (JavascriptExecutor) driver;
// 用js彈出alert
js.executeScript("alert('Test Case Execution Is started Now..');");
driver.switchTo().alert().accept();
// 用js判斷頁面載入完畢,返回complete
System.out.println("readyState: "
+ js.executeScript("return document.readyState").toString());
// 用js得到頁面的title
String title = (String) js.executeScript("return document.title");
System.out.println("current page title get by js: " + title);
// 用js得到頁面的domain name
System.out.println("current page domain name get by js: "
+ js.executeScript("return document.domain"));
// 用js操作頁面元素,如高亮顯示某個元素
WebElement element = driver.findElement(By.id("kw" ));
js.executeScript("arguments[0].setAttribute('style', arguments[1]);",
element, "color: orange; border: 4px solid orange;");
/**
* 每隔一秒check一下頁面載入是否完成,check次數是25
*/
public void checkPageIsReady() {
JavascriptExecutor js = (JavascriptExecutor) driver;
for (int i = 0; i < 25; i++) {
if ("complete".equals(js
.executeScript("return document.readyState").toString())) {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}