來源自 這裡
Preface:
最近的研究需要針對 Web browsing 的行為進行自動化, 就 Google 到了 Selenium 這個套件. 而這篇文章要針對這個套件在 Java 上的支援做個使用入門介紹. 首先我們要來看看 WebDriver 介面上提供的方法與簡單使用範例. 當然在開始 coding 前要先去下載該套件的 package. 下載 selenium-java-[version].jar
Example1:
第一個範例要示範透過 HtmlUnitDriver 來模擬在 Google 搜尋 "Cheese". 剛剛提到的 WebDriver 是個介面, 而 HtmlUnitDriver 則是我們選擇它的實作類別. 在下面代碼中我們首先利用介面上的 get() 方法來載入 Google 的頁面, 接著取得 HTML 元件中 name="q" 的元件並以 WebElement 表示. 事實上當你打開 Google 頁面並檢視原始碼時會發現:
它就是提交搜尋 form 表單的 input 元件. 所以接著透過上面的方法 sendKeys() 將搜尋的字串輸入後便提交標單. 完整代碼如下:
Example2:
下一個範例是要示範如何模擬瀏覽器行為並取的 Google Suggestion (當你在 Google 搜尋輸入部分字串, Google 會提示最常搜尋的完整字串清單). 完整代碼如下, 比較不一樣的是這次 WebDriver 選擇的實作類別是 FirefoxDriver. 而使用這個類別前你先要安裝 Firefox 瀏覽器, 當你執行 get() 方法時你會發現 Firefox 瀏覽器被叫起來並輸入你要瀏覽的 URL. 最後並呼叫方法 close() 來關閉瀏覽器:
Supplement:
* Next Steps For Using WebDriver
Preface:
最近的研究需要針對 Web browsing 的行為進行自動化, 就 Google 到了 Selenium 這個套件. 而這篇文章要針對這個套件在 Java 上的支援做個使用入門介紹. 首先我們要來看看 WebDriver 介面上提供的方法與簡單使用範例. 當然在開始 coding 前要先去下載該套件的 package. 下載 selenium-java-[version].jar
Example1:
第一個範例要示範透過 HtmlUnitDriver 來模擬在 Google 搜尋 "Cheese". 剛剛提到的 WebDriver 是個介面, 而 HtmlUnitDriver 則是我們選擇它的實作類別. 在下面代碼中我們首先利用介面上的 get() 方法來載入 Google 的頁面, 接著取得 HTML 元件中 name="q" 的元件並以 WebElement 表示. 事實上當你打開 Google 頁面並檢視原始碼時會發現:
它就是提交搜尋 form 表單的 input 元件. 所以接著透過上面的方法 sendKeys() 將搜尋的字串輸入後便提交標單. 完整代碼如下:
- package test.selenium;
- import java.io.File;
- import org.apache.commons.io.FileUtils;
- import org.openqa.selenium.By;
- import org.openqa.selenium.OutputType;
- import org.openqa.selenium.TakesScreenshot;
- import org.openqa.selenium.WebDriver;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.firefox.FirefoxBinary;
- import org.openqa.selenium.firefox.FirefoxDriver;
- import org.openqa.selenium.htmlunit.HtmlUnitDriver;
- public class Example {
- /**
- * BD: Refer to https://code.google.com/p/selenium/wiki/GettingStarted
- * @param args
- */
- public static void main(String args[]) throws Exception
- {
- // Create a new instance of the html unit driver
- // Notice that the remainder of the code relies on the interface,
- // not the implementation.
- WebDriver driver = new HtmlUnitDriver();
- // And now use this to visit Google
- driver.get("http://www.google.com");
- // Find the text input element by its name
- WebElement element = driver.findElement(By.name("q"));
- // Enter something to search for
- element.sendKeys("Cheese!");
- // Now submit the form. WebDriver will find the form for us from the element
- element.submit();
- // Check the title of the page
- Thread.sleep(5000);
- System.out.println("Page title is: " + driver.getTitle());
- }
- }
下一個範例是要示範如何模擬瀏覽器行為並取的 Google Suggestion (當你在 Google 搜尋輸入部分字串, Google 會提示最常搜尋的完整字串清單). 完整代碼如下, 比較不一樣的是這次 WebDriver 選擇的實作類別是 FirefoxDriver. 而使用這個類別前你先要安裝 Firefox 瀏覽器, 當你執行 get() 方法時你會發現 Firefox 瀏覽器被叫起來並輸入你要瀏覽的 URL. 最後並呼叫方法 close() 來關閉瀏覽器:
- package test.selenium;
- import java.util.List;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebDriver;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.firefox.FirefoxDriver;
- public class GoogleSuggest {
- public static void main(String[] args) throws Exception{
- // The Firefox driver supports javascript
- WebDriver driver = new FirefoxDriver();
- // Go to the Google Suggest home page
- driver.get("http://www.google.com/webhp?complete=1&hl=en");
- // Enter the query string "Cheese"
- WebElement query = driver.findElement(By.name("q"));
- query.sendKeys("Cheese");
- // Sleep until the div we want is visible or 5 seconds is over
- long end = System.currentTimeMillis() + 5000;
- while (System.currentTimeMillis() < end) {
- WebElement resultsDiv = driver.findElement(By.className("gssb_e"));
- // If results have been returned, the results are displayed in a drop down.
- if (resultsDiv.isDisplayed()) {
- break;
- }
- }
- // And now list the suggestions
- List
allSuggestions = driver.findElements(By.xpath("//td[@class='gssb_a gbqfsf']")); - for (WebElement suggestion : allSuggestions) {
- System.out.println(suggestion.getText());
- }
- System.out.printf("\t[Info] Sleep 5 sec and close the browser...\n");
- Thread.sleep(5000);
- driver.close();
- }
- }
* Next Steps For Using WebDriver
沒有留言:
張貼留言