JavaScript的調用
在web自動化操作頁面的時候,有些特殊的情況selenium的api無法完成,需要通過執行一段js來實現的DOM操作;
//執行方式 JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; jsExecutor.executeScript("js代碼");
例如:
1.時間插件限制手動輸入的情況下,sendkeys無法寫入數據,需要執行js來移除readonly屬性!
詳細參考博客:時間控件的處理
2.有些頁面元素需要拉動滾動條才能獲取到(因為拉取滾動條才加載),而selenium和webdriver都沒有提供操作滾動條的方法,只能借助js來完成!
//執行方式 JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; String js = "document.body.scrollTop=200"; jsExecutor.executeScript(js);//執行js
興趣擴展:實現滾動條勻速向下滾動代碼
package cn.test; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; public class Test { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe"); WebDriver driver =new ChromeDriver(); try { driver.get("https://www.12306.cn/index/"); driver.manage().window().maximize(); Thread.sleep(5000); //執行方式 JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; // String js = "document.documentElement.scrollTop=200"; String js = null; for (int i = 0; i < driver.manage().window().getSize().height*2; i=i+3) { if(driver instanceof ChromeDriver) { js = "document.body.scrollTop="+i; }else if(driver instanceof FirefoxDriver) { js = "document.documentElement.scrollTop="+i; }else if(driver instanceof InternetExplorerDriver) { js = "document.documentElement.scrollTop="+i; } jsExecutor.executeScript(js);//執行js } Thread.sleep(5000); } catch (Exception e) { e.printStackTrace(); }finally { System.out.println("執行結束,關閉瀏覽器!"); driver.quit(); } } }
學習后總結,不足之處后續補充。。。
未完待續、、、