1.1 下載selenium2.0的包
- 官方download包地址:http://code.google.com/p/selenium/downloads/list
- 官方User Guide: http://seleniumhq.org/docs/
- 官方API: http://selenium.googlecode.com/git/docs/api/java/index.html
1.2.1 用webdriver開啟一個瀏覽器
- 開啟firefox瀏覽器:
WebDriver driver = new FirefoxDriver();
- 開啟IE瀏覽器
WebDriver driver = new InternetExplorerDriver ();
- 開啟HtmlUnit瀏覽器
WebDriverdriver = new HtmlUnitDriver();
- 開啟chrome瀏覽器
WebDriverdriver = new ChromeDriver();
1.2.2 最大化瀏覽器
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
1.2.3 關閉瀏覽器
WebDriver driver = new FirefoxDriver();
- driver.close();
- driver.quit();
1.3 開啟測試頁面
- driver.get("http://www.google.com");
- driver.navigate().to("http://www.baidu.com/");
P.S.navigate方法會產生1個Navigator物件,其封裝了與導航相關的一些方法,比如前進後退等
1.4 頁面元素定位
Webdriver提供下面兩種方法來定位頁面元素,引數是By對像,最常用是By.id和By.name查詢。
- findElement 定位某個元素,如果沒有找到元素會丟擲異常:NoSuchElementException
- findElements 定位一組元素
例如需要定位如下元素:
<input class="input_class" type="text" name="passwd" id="passwd-id" />
- By.id:
WebElement element = driver.findElement(By.id("passwd-id"));
- By.name:
WebElement element = driver.findElement(By.name("passwd"));
- By.xpath:
WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));
- By.className
WebElement element = driver.findElement(By.className("input_class"));
- By.cssSelector
WebElement element = driver.findElement(By.cssSelector(".input_class"));
- By.linkText:
//通俗點就是精確查詢
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
WebElement element = driver.findElement(By.linkText("百科"));
- By.partialLinkText:
//這個方法就是模糊查詢
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
WebElement element = driver.findElement(By.partialLinkText("hao"));
- By.tagName:
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
String test= driver.findElement(By.tagName("form")).getAttribute("name");
System.out.println(test);
1.5 如何對頁面元素進行操作
1.5.1 輸入框(text field or textarea)
WebElement element = driver.findElement(By.id("passwd-id"));
- element.sendKeys(“test”);//在輸入框中輸入內容:
- element.clear(); //將輸入框清空
- element.getText(); //獲取輸入框的文字內容:
1.5.2下拉選擇框(Select)
Select select = new Select(driver.findElement(By.id("select")));
- select.selectByVisibleText(“A”);
- select.selectByValue(“1”);
- select.deselectAll();
- select.deselectByValue(“1”);
- select.deselectByVisibleText(“A”);
- select.getAllSelectedOptions();
- select.getFirstSelectedOption();
1.5.3單選項(Radio Button)
WebElement radio=driver.findElement(By.id("BookMode"));
- radio.click(); //選擇某個單選項
- radio.clear(); //清空某個單選項
- radio.isSelected(); //判斷某個單選項是否已經被選擇
1.5.4多選項(checkbox)
WebElement checkbox = driver.findElement(By.id("myCheckbox."));
- checkbox.click();
- checkbox.clear();
- checkbox.isSelected();
- checkbox.isEnabled();
1.5.5按鈕(button)
WebElement btn= driver.findElement(By.id("save"));
- btn.click(); //點選按鈕
- btn.isEnabled (); //判斷按鈕是否enable
1.5.7彈出對話方塊(Popup dialogs)
Alert alert = driver.switchTo().alert();
- alert.accept(); //確定
- alert.dismiss(); //取消
- alert.getText(); //獲取文字
1.5.8表單(Form)
Form中的元素的操作和其它的元素操作一樣,對元素操作完成後對錶單的提交可以:
WebElement approve = driver.findElement(By.id("approve"));
approve.click();
或
approve.submit();//只適合於表單的提交
1.5.9上傳檔案
上傳檔案的元素操作:
WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));
String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
adFileUpload.sendKeys(filePath);
1.6 Windows 和 Frames之間的切換
- driver.switchTo().defaultContent(); //返回到最頂層的frame/iframe
- driver.switchTo().frame("leftFrame"); //切換到某個frame:
- driver.switchTo().window("windowName"); //切換到某個window
1.7 呼叫Java Script
Web driver對Java Script的呼叫是通過JavascriptExecutor來實現的,例如:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("JS指令碼");
1.8 超時設定
WebDriver driver = new FirefoxDriver();
- driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //識別元素時的超時時間
- driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //頁面載入時的超時時間
- driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); //非同步指令碼的超時時間