大家都知道,Selenium作用于webelements屬性,例如ID,名稱,Xpath等與QTP有一個內(nèi)置的對象庫(OR),Selenium還沒有NOT得到一個內(nèi)置OR。
因此,我們需要建立或也應(yīng)該是維護(hù)和按需訪問。 Page對象模型(POM)是一種流行的設(shè)計模式,以創(chuàng)造一種與webelements特性中的每一個都使用一個類文件創(chuàng)建一個對象庫。
頁面的對象模型是其中測試對象和功能被彼此分開,從而保持代碼干凈的實現(xiàn)。
對象保持獨立的測試腳本。一個目的可以通過一個或多個測試腳本進(jìn)行訪問,因此,POM可以幫助我們創(chuàng)建對象一次和多次使用。
由于創(chuàng)建對象后,很容易訪問和易于更新一個對象的特定屬性。
網(wǎng)頁中的每一個創(chuàng)建對象和方法被開發(fā)專用于訪問這些對象。讓我們利用http://calculator.net來理解是一樣的。
存在與之關(guān)聯(lián)的各種計算器,并在特定的頁面的那些對象中的每一個在一個單獨的類文件為靜態(tài)方法創(chuàng)建,他們都在'測試'class文件中的靜態(tài)方法將被訪問的對象進(jìn)行訪問。
讓我們來了解通過執(zhí)行用于百分比計算器測試中實現(xiàn)POM 。
步驟1:創(chuàng)建一個包內(nèi)一個簡單的類(page_objects_perc_calc.java)文件,并創(chuàng)建這些對象標(biāo)識符中的每一個方法,如下圖所示。
package PageObject;
import org.openqa.selenium.*;
public class page_objects_perc_calc
{
private static WebElement element = null;
// Math Calc Link
public static WebElement lnk_math_calc(WebDriver driver)
{
element = driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a"));
return element;
}
// Percentage Calc Link
public static WebElement lnk_percent_calc(WebDriver driver)
{
element = driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a"));
return element;
}
// Number 1 Text Box
public static WebElement txt_num_1(WebDriver driver)
{
element = driver.findElement(By.id("cpar1"));
return element;
}
// Number 2 Text Box
public static WebElement txt_num_2(WebDriver driver)
{
element = driver.findElement(By.id("cpar2"));
return element;
}
// Calculate Button
public static WebElement btn_calc(WebDriver driver)
{
element = driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input"));
return element;
}
// Result
public static WebElement web_result(WebDriver driver)
{
element = driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b"));
return element;
}
}
第2步:創(chuàng)建一個類主導(dǎo)入包,并為這些對象標(biāo)識符中的每一個方法,如下圖所示。
package PageObject;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class percent_calculator
{
private static WebDriver driver = null;
public static void main(String[] args)
{
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.calculator.net");
// Use page Object library now
page_objects_perc_calc.lnk_math_calc(driver).click();
page_objects_perc_calc.lnk_percent_calc(driver).click();
page_objects_perc_calc.txt_num_1(driver).clear();
page_objects_perc_calc.txt_num_1(driver).sendKeys("10");
page_objects_perc_calc.txt_num_2(driver).clear();
page_objects_perc_calc.txt_num_2(driver).sendKeys("50");
page_objects_perc_calc.btn_calc(driver).click();
String result = page_objects_perc_calc.web_result(driver).getText();
if(result.equals("5"))
{
System.out.println(" The Result is Pass");
}
else
{
System.out.println(" The Result is Fail");
}
driver.close();
}
}
該測試被執(zhí)行并且將結(jié)果打印在控制臺。以下是相同的快照。