大家都知道,Selenium作用于webelements屬性,例如ID,名稱,Xpath等與QTP有一個(gè)內(nèi)置的對(duì)象庫(OR),Selenium還沒有NOT得到一個(gè)內(nèi)置OR。
因此,我們需要建立或也應(yīng)該是維護(hù)和按需訪問。 Page對(duì)象模型(POM)是一種流行的設(shè)計(jì)模式,以創(chuàng)造一種與webelements特性中的每一個(gè)都使用一個(gè)類文件創(chuàng)建一個(gè)對(duì)象庫。
頁面的對(duì)象模型是其中測試對(duì)象和功能被彼此分開,從而保持代碼干凈的實(shí)現(xiàn)。
對(duì)象保持獨(dú)立的測試腳本。一個(gè)目的可以通過一個(gè)或多個(gè)測試腳本進(jìn)行訪問,因此,POM可以幫助我們創(chuàng)建對(duì)象一次和多次使用。
由于創(chuàng)建對(duì)象后,很容易訪問和易于更新一個(gè)對(duì)象的特定屬性。
網(wǎng)頁中的每一個(gè)創(chuàng)建對(duì)象和方法被開發(fā)專用于訪問這些對(duì)象。讓我們利用http://calculator.net來理解是一樣的。
存在與之關(guān)聯(lián)的各種計(jì)算器,并在特定的頁面的那些對(duì)象中的每一個(gè)在一個(gè)單獨(dú)的類文件為靜態(tài)方法創(chuàng)建,他們都在'測試'class文件中的靜態(tài)方法將被訪問的對(duì)象進(jìn)行訪問。
讓我們來了解通過執(zhí)行用于百分比計(jì)算器測試中實(shí)現(xiàn)POM 。
步驟1:創(chuàng)建一個(gè)包內(nèi)一個(gè)簡單的類(page_objects_perc_calc.java)文件,并創(chuàng)建這些對(duì)象標(biāo)識(shí)符中的每一個(gè)方法,如下圖所示。
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)建一個(gè)類主導(dǎo)入包,并為這些對(duì)象標(biāo)識(shí)符中的每一個(gè)方法,如下圖所示。
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é)果打印在控制臺(tái)。以下是相同的快照。