在這篇文中我簡單介紹JAVA如何使用Selenium及展示一個範例。
前置步驟:
- 下載 Selenium 的 Java Lib
到Selenium的下載頁面下載 - Selenium Client & WebDriver Language Bindings
- Selenium Standalone Server (我下載的為3.11.0)
- 下載各瀏覽器的WebDriver
- Chrome : ChromeDriver
- Firefox : geckodriver
- 在Java程式中引入Library和指定WebDriver就可以開始控制瀏覽器了。
import java.util.List;
import java.util.concurrent.TimeUnit;
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;
import org.openqa.selenium.firefox.FirefoxDriver;
public class SeleniumTest1 {
public static void main(String[] args) {
System.out.println("Start");
//自己選擇要用的瀏覽器 WebDriver
//用Chrome
System.setProperty("webdriver.chrome.driver","D:\\JavaLib\\Selenium\\webdrivers\\Chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
//用Firefox
//System.setProperty("webdriver.gecko.driver","D:\\javaLib\\selenium-java-3.10.0\\Firefox\\geckodriver.exe");
//WebDriver driver = new FirefoxDriver();
//使用implicitlyWait,抓取DOM時,會等DOM出現才抓,最多等10秒
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.google.com.tw/"); //開啟瀏覽器到 Google 首頁
//抓取DOM element,#lst-ib 為Google搜尋框
WebElement searchInput = driver.findElement(By.id("lst-ib"));
//執行Javascript範例
//將Google搜尋框打上字,"keyword"
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
javascriptExecutor.executeScript("arguments[0].value='keyword';", searchInput);
//用WebElement物件直接操做DOM element範例
//抓取DOM element,name=btnK 為Google搜尋按鈕
WebElement searchBtn = driver.findElement(By.name("btnK"));
searchBtn.click();
//印出十頁的所有搜尋結果Title和Link url
for (int i = 0; i < 10; i++) {
//抓取DOM elements, (.r a) 為Google搜尋結果的link
List<WebElement> searchReultATagList = driver.findElements(By.cssSelector(".r a"));
for (WebElement searchReultATag : searchReultATagList) {
System.out.println(searchReultATag.getText() + " : ");
System.out.println(searchReultATag.getAttribute("href"));
System.out.println("=======================");
}
//抓取DOM element, #pnnext 為Google搜尋下一頁按鈕
WebElement nextPageBtn = driver.findElement(By.id("pnnext"));
nextPageBtn.click();
}
driver.quit(); //關閉瀏覽器
}
}
sss
參考資料
沒有留言 :
張貼留言