用 Eclipse 建個 Maven 的工程,建成後,直接修改 pom.xml,(參考:http://seleniumhq.org/docs/03_webdriver.html#setting-up-a-selenium-webdriver-project) html
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Selenium2Test</groupId> <artifactId>Selenium2Test</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.25.0</version> </dependency> <dependency> <groupId>com.opera</groupId> <artifactId>operadriver</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>com.opera</groupId> <artifactId>operadriver</artifactId> <version>0.16</version> <exclusions> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-remote-driver</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> </project>
pom.xml 修改保存後,eclipse 會自動把須要的 jar 包下載完成。 前端
package lesson1; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class ExampleForFireFox { public static void main(String[] args) { // 若是你的 FireFox 沒有安裝在默認目錄,那麼必須在程序中設置 // System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); // 建立一個 FireFox 的瀏覽器實例 WebDriver driver = new FirefoxDriver(); // 讓瀏覽器訪問 Baidu driver.get("http://www.baidu.com"); // 用下面代碼也能夠實現 // driver.navigate().to("http://www.baidu.com"); // 獲取 網頁的 title System.out.println("1 Page title is: " + driver.getTitle()); // 經過 id 找到 input 的 DOM WebElement element = driver.findElement(By.id("kw")); // 輸入關鍵字 element.sendKeys("zTree"); // 提交 input 所在的 form element.submit(); // 經過判斷 title 內容等待搜索頁面加載完畢,Timeout 設置10秒 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().endsWith("ztree"); } }); // 顯示搜索結果頁面的 title System.out.println("2 Page title is: " + driver.getTitle()); //關閉瀏覽器 driver.quit(); } }
出現這個錯誤,頗有意思。 查了一下 有人說應該是 hosts 出現了問題,加上一個 127.0.0.1 localhost 就好了,但個人 hosts 上確定有這個玩意,爲啥也會出現這個問題呢? java
通過調試,發現 127.0.0.1 localhost 的設置必需要在 hosts 文件的最開始,並且若是後面有其餘設置後,也不要再出現一樣的 127.0.0.1 localhost ,只要有就會出錯。(由於我爲了方便訪問 google 的網站,專門加入了 smarthosts 的內容,致使了 localhost 的重複) web
【3. 測試 Chrome】package lesson1; import java.io.File; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriverService; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class ExampleForChrome { public static void main(String[] args) throws IOException { // 設置 chrome 的路徑 System.setProperty( "webdriver.chrome.driver", "C:\\Documents and Settings\\sq\\Local Settings\\Application Data\\Google\\Chrome\\Application\\chrome.exe"); // 建立一個 ChromeDriver 的接口,用於鏈接 Chrome @SuppressWarnings("deprecation") ChromeDriverService service = new ChromeDriverService.Builder() .usingChromeDriverExecutable( new File( "E:\\Selenium WebDriver\\chromedriver_win_23.0.1240.0\\chromedriver.exe")) .usingAnyFreePort().build(); service.start(); // 建立一個 Chrome 的瀏覽器實例 WebDriver driver = new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome()); // 讓瀏覽器訪問 Baidu driver.get("http://www.baidu.com"); // 用下面代碼也能夠實現 // driver.navigate().to("http://www.baidu.com"); // 獲取 網頁的 title System.out.println("1 Page title is: " + driver.getTitle()); // 經過 id 找到 input 的 DOM WebElement element = driver.findElement(By.id("kw")); // 輸入關鍵字 element.sendKeys("zTree"); // 提交 input 所在的 form element.submit(); // 經過判斷 title 內容等待搜索頁面加載完畢,Timeout 設置10秒 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().endsWith("ztree"); } }); // 顯示搜索結果頁面的 title System.out.println("2 Page title is: " + driver.getTitle()); // 關閉瀏覽器 driver.quit(); // 關閉 ChromeDriver 接口 service.stop(); } }
【2012.12.06補充】 chrome
上一個 Demo 中沒法正常使用 new ChromeDriver(),今天在作進一步學習時看到一篇文章(http://qa.blog.163.com/blog/static/19014700220122231779/),恍然大悟,原來只須要把 ‘webdriver.chrome.driver’ 的值設置爲 chromedriver 的路徑就能夠了。 apache
package lesson1; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class ExampleForChrome2 { public static void main(String[] args) throws IOException { // 設置 chrome 的路徑 System.setProperty( "webdriver.chrome.driver", "E:\\Selenium WebDriver\\chromedriver_win_23.0.1240.0\\chromedriver.exe"); // 建立一個 ChromeDriver 的接口,用於鏈接 Chrome // 建立一個 Chrome 的瀏覽器實例 WebDriver driver = new ChromeDriver(); // 讓瀏覽器訪問 Baidu driver.get("http://www.baidu.com"); // 用下面代碼也能夠實現 // driver.navigate().to("http://www.baidu.com"); // 獲取 網頁的 title System.out.println("1 Page title is: " + driver.getTitle()); // 經過 id 找到 input 的 DOM WebElement element = driver.findElement(By.id("kw")); // 輸入關鍵字 element.sendKeys("zTree"); // 提交 input 所在的 form element.submit(); // 經過判斷 title 內容等待搜索頁面加載完畢,Timeout 設置10秒 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().endsWith("ztree"); } }); // 顯示搜索結果頁面的 title System.out.println("2 Page title is: " + driver.getTitle()); // 關閉瀏覽器 driver.quit(); // element = driver.findElement(By.id("kw")); // // element.clear(); // element.click(); // element.clear(); // element.sendKeys("zTree"); // element.submit(); } }
package lesson1; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class ExampleForIE { public static void main(String[] args) { // 若是你的 FireFox 沒有安裝在默認目錄,那麼必須在程序中設置 // System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); // 建立一個 FireFox 的瀏覽器實例 WebDriver driver = new InternetExplorerDriver(); // 讓瀏覽器訪問 Baidu driver.get("http://www.baidu.com"); // 用下面代碼也能夠實現 // driver.navigate().to("http://www.baidu.com"); // 獲取 網頁的 title System.out.println("1 Page title is: " + driver.getTitle()); // 經過 id 找到 input 的 DOM WebElement element = driver.findElement(By.id("kw")); // 輸入關鍵字 element.sendKeys("zTree"); // 提交 input 所在的 form element.submit(); // 經過判斷 title 內容等待搜索頁面加載完畢,Timeout 設置10秒 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().endsWith("ztree"); } }); // 顯示搜索結果頁面的 title System.out.println("2 Page title is: " + driver.getTitle()); // 關閉瀏覽器 driver.quit(); } }