JavascriptExecutor js = (JavascriptExecutor) driver;js.executeScript(Stringscript,object... args);
第一行代碼將driver強(qiáng)制轉(zhuǎn)換為JavascriptExecutor
第二行代碼是執(zhí)行js,參數(shù)script是要執(zhí)行的js語句,可以看到第二個(gè)參數(shù)在參數(shù)類型和參數(shù)名之間有…,
在Java里,這代表這個(gè)參數(shù)可以沒有,也可以有1個(gè)或者多個(gè)。對(duì)于executeScript這個(gè)方法,取決于js語句是否需要參數(shù)。該方法返回值Boolean, Long, String, List or WebElement. 或者是 null.
JavascriptExecutor js = (JavascriptExecutor) driver;// 用js彈出alertjs.executeScript("alert('Test Case Execution Is started Now..');");driver.switchTo().alert().accept();// 用js判斷頁面加載完畢,返回completeSystem.out.println("readyState: "+ js.executeScript("return document.readyState").toString());// 用js得到頁面的titleString title = (String) js.executeScript("return document.title");System.out.println("current page title get by js: "+ title);// 用js得到頁面的domain nameSystem.out.println("current page domain name get by js: "+ js.executeScript("return document.domain"));// 用js操作頁面元素,如高亮顯示某個(gè)元素WebElement element = driver.findElement(By.id("kw"));js.executeScript("arguments[0].setAttribute('style', arguments[1]);",? ? ? ? element,"color: orange; border: 4px solid orange;");/**
* 每隔一秒check一下頁面加載是否完成,check次數(shù)是25
*/publicvoidcheckPageIsReady() {? ? JavascriptExecutor js = (JavascriptExecutor) driver;for(inti =0; i <25; i++) {if("complete".equals(js? ? ? ? ? ? ? ? .executeScript("return document.readyState").toString())) {break;? ? ? ? }try{? ? ? ? ? ? Thread.sleep(1000);? ? ? ? }catch(InterruptedException e) {? ? ? ? ? ? e.printStackTrace();? ? ? ? }? ? }}