【2. 測試 FireFox】
Selenium 初是在 FireFox 上做起來的插件,所以我們先來搭建 FireFox 的環(huán)境。
確保你正確安裝了 FireFox 后,可以直接編寫 java 代碼測試嘍。
在 lesson1 目錄下建立 ExampleForFireFox.java
(因為國內不少朋友訪問 google 的時候會出問題,所以我把代碼中的 google 變成 baidu 了)
01 packagelesson1;
02
03 importorg.openqa.selenium.By;
04 importorg.openqa.selenium.WebDriver;
05 importorg.openqa.selenium.WebElement;
06 importorg.openqa.selenium.firefox.FirefoxDriver;
07 importorg.openqa.selenium.support.ui.ExpectedCondition;
08 importorg.openqa.selenium.support.ui.WebDriverWait;
09
10 publicclassExampleForFireFox {
11 publicstaticvoidmain(String[] args) {
12 // 如果你的 FireFox 沒有安裝在默認目錄,那么必須在程序中設置
13 // System.setProperty("webdriver.firefox.bin", "D:\Program Files\Mozilla Firefox\firefox.exe");
14 // 創(chuàng)建一個 FireFox 的瀏覽器實例
15 WebDriver driver =newFirefoxDriver();
16
17 // 讓瀏覽器訪問 Baidu
18 driver.get("http://www.baidu.com");
19 // 用下面代碼也可以實現
20 // driver.navigate().to("http://www.baidu.com");
21
22 // 獲取 網頁的 title
23 System.out.println("1 Page title is: "+ driver.getTitle());
24
25 // 通過 id 找到 input 的 DOM
26 WebElement element = driver.findElement(By.id("kw"));
27
28 // 輸入關鍵字
29 element.sendKeys("zTree");
30
31 // 提交 input 所在的 form
32 element.submit();
33
34 // 通過判斷 title 內容等待搜索頁面加載完畢,間隔10秒
35 (newWebDriverWait(driver,10)).until(newExpectedCondition<Boolean>() {
36 publicBoolean apply(WebDriver d) {
37 returnd.getTitle().toLowerCase().endsWith("ztree");
38 }
39 });
40
41 // 顯示搜索結果頁面的 title
42 System.out.println("2 Page title is: "+ driver.getTitle());
43
44 //關閉瀏覽器
45 driver.quit();
46 }
47 }
普通情況下,直接運行代碼可以看到會自動彈出 FireFox 窗口,訪問 baidu.com,然后輸入關鍵字并查詢,一切都是自動完成的。
錯誤提醒:
1)Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed.
出現這個錯誤,是說明你的 FireFox 文件并沒有安裝在默認目錄下,這時候需要在開始執(zhí)行:System.setProperty 設置環(huán)境變量 "webdriver.firefox.bin" 將自己機器上 FireFox 的正確路徑設置完畢后即可。
2)Exception in thread "main" org.openqa.selenium.UnsupportedCommandException: Bad request
出現這個錯誤,很有意思。 查了一下 有人說應該是 hosts 出現了問題,加上一個 127.0.0.1 localhost 行了,但我的 hosts 上肯定有這個玩意,為啥也會出現這個問題呢?
經過調試,發(fā)現 127.0.0.1 localhost 的設置必須要在 hosts 文件的開始,而且如果后面有其他設置后,也不要再出現同樣的 127.0.0.1 localhost ,只要有會出錯。(因為我為了方便訪問 google 的網站,專門加入了 smarthosts 的內容,導致了 localhost 的重復)