1. 程式人生 > >在selenium(webdriver)中執行js

在selenium(webdriver)中執行js

程式碼

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(); } } }