1.操作頁面元素--單選按鈕
WebElement femaleRadioButton = driver.findElement(By.xpath(""));
if (!femaleRadioButton.isSelected()) {//判斷按鈕如果未被選中,則單擊選中。
femaleRadioButton.click();
}
assertTrue(femaleRadioButton.isSelected());//再次判斷單選按鈕是否被選中。
2.操作頁面元素--多選按鈕
WebElement checkBox1 = driver.findElement(By.xpath(""));
if (!checkBox1.isSelected()) {
checkBox1.click();
}
assertTrue(checkBox1.isSelected());
WebElement checkBox2 = driver.findElement(By.cssSelector(""));
if (!checkBox2.isSelected()) {
checkBox2.click();
}
assertTrue(checkBox2.isSelected());
3.操作頁面元素--驗證標題
//通過變量parentWindowId記錄下父窗口的控點。
String parentWindowId = driver.getWindowHandle();
//驗證父窗口的完整標題是Window open() Method
assertEquals("Window open() Method", driver.getTitle());
//定位到Try it Yourself按鈕,且單擊以打開彈出窗口
WebElement tryItButton = driver.findElement(By.xpath(".//*[@id='main']/div[2]/a"));
tryItButton.click();
//獲取所有打開窗口的控點列表,并以變量allWindowId記錄。
Set<String> allWindowId = driver.getWindowHandles();
//在該控點列表中查找包含Tryit字符串作為標題的窗口控點,找到后則Break。
for (String windowId : allWindowId) {
//切換到包含TryIt字符串作為標題的窗口
if (driver.switchTo().window("windowId").getTitle().contains("TryIt")) {
driver.switchTo().window("windowId");
break;
}
}
//驗證其完整標題為Tryit Editor v2.9
assertEquals("Tryit Editor v2.9", driver.getTitle());
//通過父窗口的控點再次切換回原父窗口
driver.switchTo().window(parentWindowId);
//驗證其完整標題為Window open() Method,確認此處窗口切換功能的完成。
assertEquals("Window open() Method", driver.getTitle());
4.操作頁面元素--驗證內容
// 記錄父窗口的控點
String parentWindowId = driver.getWindowHandle();
// 驗證父窗口完整標題
assertEquals("Window open() Method", driver.getTitle());
// 點擊Tryit按鈕
WebElement TryitButton = driver.findElement(By.xpath(".//*[@id='main']/div[2]/a"));
TryitButton.click();
// 獲取所有打開窗口的控點
Set<String> allWindowsId = driver.getWindowHandles();
// 在該控點列表中查找包含open a new browser window字符串作為標題的窗口控點,找到后則Break。
for (String windowId : allWindowsId) {
if (driver.switchTo().window(windowId).getPageSource().contains("open a new browser window")) {
driver.switchTo().window(windowId);
break;
}
}
assertEquals("Tryit Editor v2.9", driver.getTitle());
driver.switchTo().window(parentWindowId);
assertEquals("Window open() Method", driver.getTitle());
5.操作頁面元素--操作警告框、提示框、確認框
警告框:用于提示用戶相關信息的驗證結果、錯誤或警告等
提示框:用于提示用戶在當前對話框中輸入數據 ,一般需用戶單擊取消或確認按鈕
確認框:用于提示用戶確認或取消某個操作。一般需用戶單擊取消或確認按鈕
//注意這里需要導入testNG的包。jnuit包不起作用。
//警告框
WebElement alertButton = driver.findElement(By.xpath("http://input[@value = 'alert']"));
Thread.sleep(3000);
alertButton.click();
//切換到警告框并將其窗口控點賦予Selenium的Alert,以此來操作彈出的警告框。
Alert javascriptAlert = driver.switchTo().alert();
Thread.sleep(3000);
System.out.println(javascriptAlert.getText());//打印出警告框上的文本信息:This is an alert!!
//執行警告框上的確認按鈕的功能。
javascriptAlert.accept();
Thread.sleep(3000);
System.out.println("------------------------------------");
}
//提示框
WebElement promptButton = driver.findElement(By.xpath("http://input[@value = 'prompt']"));
//單擊提示框
promptButton.click();
Alert javascriptPrompt = driver.switchTo().alert();
//在文本輸入框中輸入如下文本信息。
javascriptPrompt.sendKeys("type in prompt...");
//單擊確認按鈕
javascriptPrompt.accept();
System.out.println(javascriptPrompt.getText());//打印出:Your response was OK!
javascriptPrompt = driver.switchTo().alert();
javascriptPrompt.accept();
promptButton.click();
javascriptPrompt = driver.switchTo().alert();
System.out.println(javascriptPrompt.getText());//打?。篊onfirm Test: Continue?
//點擊“取消”按鈕
javascriptPrompt.dismiss();
javascriptPrompt = driver.switchTo().alert();
System.out.println(javascriptPrompt.getText());//打印:Your response was Cancel!
javascriptPrompt.accept();
Thread.sleep(3000);
System.out.println("------------------------------------");
}
//確認框
WebElement confirmButton = driver.findElement(By.xpath("http://input[@value = 'confirm']"));
confirmButton.click();
//定位到確認框
Alert javascriptConfirm = driver.switchTo().alert();
//先執行確認框上的確認按鈕
javascriptConfirm.accept();
//再次定位到確認框
javascriptConfirm = driver.switchTo().alert();
System.out.println(javascriptConfirm.getText());//打?。篩our favorite color is: type in prompt...
//點擊確認
javascriptConfirm.accept();
//再次點擊確認框的按鈕
confirmButton.click();
//定位到確認框
javascriptConfirm = driver.switchTo().alert();
System.out.println(javascriptConfirm.getText());//打?。篧hat is your favorite color?
//再執行確認框上的“取消”按鈕
javascriptConfirm.dismiss();
javascriptConfirm = driver.switchTo().alert();
System.out.println(javascriptConfirm.getText());//打?。篩ou pressed Cancel or no value was entered!
javascriptConfirm.accept();
Thread.sleep(3000);
System.out.println("------------------------------------");
6.操作Browser最大化
//通過WebDriver的Windows()方法將Browser窗口最大化。
driver.manage().window().maximize();
7.操作Browser Cookies
反復地登錄需要多次填寫用戶名和密碼。WebDriver提供了一系列Cookies的操作來獲取、填寫、刪除Cookies的方法,節省了多次在登錄頁面的查找元素并填寫登錄信息的時間。
(1)通過 driver.manage().getCookies()獲取Cookies信息并通過緩存和文件寫操作。保存到demo.cookie.txt文件中。
WebDriver driver = new FirefoxDriver();
// 打開登錄首頁
driver.get("https://www.shanbay.com/accounts/login/");
Thread.sleep(2000);
// 填寫相關用戶信息:用戶名、密碼等.進行登錄
driver.findElement(By.name("username")).sendKeys("admin");
driver.findElement(By.name("password")).sendKeys("123456");
driver.findElement(By.xpath(".//*[@id='loginform']/div[3]/button")).click();
// 新建一個本地文件zhihu.cookie.txt,用戶存儲后續獲取的Cookies信息
File cookieFile = new File("demo.cookie.txt");
try {
cookieFile.delete();
cookieFile.createNewFile();
FileWriter fileWriter = new FileWriter(cookieFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
System.out.println("文件創建成功!");
// 通過driver.manage().getCookies()獲取Cookies信息并通過緩存和文件寫操作,保存到zhihu.cookie.txt中
for (Cookie cookie : driver.manage().getCookies()) {
bufferedWriter.write((cookie.getName() + ";" + cookie.getValue() + ";" + cookie.getDomain() + ";"
+ cookie.getPath() + ";" + cookie.getExpiry() + ";" + cookie.isSecure()));
bufferedWriter.newLine();
}
bufferedWriter.flush();
bufferedWriter.close();
fileWriter.close();
} catch (Exception ex) {
ex.printStackTrace();
}
driver.quit();
}
}
(2)讀取之前保存的Cookies并自動填充到新打開的瀏覽器的Cookies中,然后直接進入登錄狀態后的頁面。
WebDriver driver = new FirefoxDriver();
// 打開登錄頁
driver.get("https://www.shanbay.com/accounts/login/");
// 讀取之前保存Cookies信息的文件,通過緩存操作和driver.manage().addCookies()操作將登錄信息填充到瀏覽器的Cookies中
try {
File cookieFile = new File("demo.cookie.txt");
FileReader fr = new FileReader(cookieFile);
bufferedReader = new BufferedReader(fr);
String line;
while ((line = bufferedReader.readLine()) != null) {
StringTokenizer stringTokenizer = new StringTokenizer(line, ";");
while (stringTokenizer.hasMoreTokens()) {
String name = stringTokenizer.nextToken();
String value = stringTokenizer.nextToken();
String domain = stringTokenizer.nextToken();
String path = stringTokenizer.nextToken();
Date expiry = null;
String dt;
if (!(dt = stringTokenizer.nextToken()).equals("null")) {
expiry = new Date(dt);
}
boolean isSecure = new Boolean(stringTokenizer.nextToken()).booleanValue();
Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure);
driver.manage().addCookie(cookie);
}
}
} catch (Exception e) {
e.printStackTrace();
}
// 打開主頁面,可以看到已經直接進入登錄狀態后的頁面。
driver.get("https://www.shanbay.com/");
}
}
--------------------
Cookies文件見根目錄下。
8.操作瀏覽器前進后退
WebDriver提供了直接操作瀏覽器進行前進、后退、刷新等操作。
WebDriver driver = new FirefoxDriver();
// 打開百度主頁并打印日志
driver.get("http://www.baidu.com/");
System.out.println("Go to url: " + driver.getCurrentUrl());
// 瀏覽到51blogs主頁并打印日志
driver.navigate().to("http://hongz.blog.51cto.com/");
System.out.println("Navigate to url : " + driver.getCurrentUrl());
// 刷新瀏覽器
driver.navigate().refresh();
// 回退到前一個頁面并打印日志
driver.navigate().back();
System.out.println("Back to url : " + driver.getCurrentUrl());
// 再前進到最后一個頁面并打印日志
driver.navigate().forward();
System.out.println("Forward to url : " + driver.getCurrentUrl());
driver.quit();
}
}
打印信息如下:
Go to url: https://www.baidu.com/
Navigate to url : http://hongz.blog.51cto.com/
Back to url : https://www.baidu.com/
Forward to url : http://hongz.blog.51cto.com/
9.操作頁面元素等待時間
WebDriver在 操作頁面元素等待時間時,提供了兩種等待方式:顯示等待與隱式等待。
(1)顯式等待
明確告訴WebDriver按照特定的條件進行等待,條件未達到就一直等待。 這在等待某個元素需要非常長的時間時非常有效。
(2)隱式等待
告訴WebDriver一個最大的超時時間, 如果等待的條件在超時之前就滿足,則立即執行后續操作而無須等待超時達到。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
WebElement searchBox = driver.findElement(By.name("wd"));
// 錄入selenium進行搜索
searchBox.sendKeys("selenium");
searchBox.submit();
// Explicit wait
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
// 利用顯示等待,等待條件為:直到Browser標題以selenium開頭出現才進行后續操作
return d.getTitle().toLowerCase().startsWith("selenium");
}
});
// 打印Browser標題信息
System.out.println("Page title id : " + driver.getTitle());//Page title id : selenium_百度搜索
// 回退到前一個搜索頁面
driver.navigate().back();
// implicit wait
// 利用隱式等待,等待條件為:最長等待10秒;若在10s 內已回退到前一個頁面,則直接執行后續操作。
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// 單擊搜索按鈕再次進行搜索
driver.findElement(By.id("su")).click();
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。