如果你是一个JS高手的话可以在WebDriver 中直接执行JS代码来提升效率,一般用到执行js的场景主要分一下两种:
在页面加载的时候执行JS
在某个已经定位了的元素上执行js
Demos: package org.coderinfo.demo; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class ExecuteJSOnPageLoading { private static final String URL = "file:///C:/user/Desktop/Selenium/jsdemo.html"; public static void main(String[] args) { WebDriver driver = new ChromeDriver(); // create a chrome driver driver.manage().window().maximize(); // max size the chrome window driver.get(URL); // open URL with the chrome browser try { Thread.sleep(2000); // wait for web loading } catch (InterruptedException e) { e.printStackTrace(); } // Execute JavaScript on page loading ((JavascriptExecutor)driver).executeScript("alert(\"Hello,World!\")"); ele.click(); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } driver.quit(); // close webdriver } } package org.coderinfo.demo; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class ExecuteJSOnWebElement { private static final String URL = "file:///C:/user/Desktop/Selenium/jsdemo.html"; public static void main(String[] args) { WebDriver driver = new ChromeDriver(); // create a chrome driver driver.manage().window().maximize(); // max size the chrome window driver.get(URL); // open URL with the chrome browser try { Thread.sleep(2000); // wait for web loading } catch (InterruptedException e) { e.printStackTrace(); } /* * Execute JavaScript on web element */ WebElement ele = driver.findElement(By.id("js")); // locate web element ((JavascriptExecutor) driver) .executeScript( "arguments[0].onclick=function(){alert('js has been execute!');}", ele); // add js on the web element ele.click(); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } driver.quit(); // close webdriver } } |
这里是用来测试的jsdemo.html的源码:
<!DOCTYPE html> <html> <head> <title>JavaScript Demo</title> </head> <body> <form action="#" method="get"> <input type="button" id="js" value="TestExecuteJS"/> </form> </body> </html> |
最新内容请见作者的GitHub页:http://qaseven.github.io/