我正在尝试使用selenium和java自动化web测试,
我有一个web应用程序,其中某些部分像页眉和页脚在多个页面上重复。我使用页面对象模型,为每个网页创建页面类文件。所有网页都有相同的页眉和页脚。
我已经创建了两个页面类文件,homepage.java和smallbusinesspage.java,以及两个单独的类文件,分别用于组件header和footer,header.java和footer.java。这些文件与页类文件位于不同的包中。我的测试类文件是testcasedevelopment.java,基类是testbase.java。我需要使用homepage对象从测试类testcasedevelopment.java访问头链接'enroll'(其定位器在header.java文件中)(主页包含headerhomepage定位器,可以在网页上查找整个标题。header.java文件中的linkenroll定位器定位头中的链接。所以链接的完整定位器是headerhomepage+linkenroll,意思是 //header//div[@id='masthead']//a[normalize-space()='Enroll']
我无法访问它。
我不想在每个页面类文件中为页眉和页脚创建重复项。如何将这些节定义为单独的类文件,并将它们包含在页面类文件中?
主页.java
public class HomePage extends TestBase {
@FindBy(xpath = "//header//div[@id='masthead']")
public Header HeaderHomePage;
public HomePage() {
PageFactory.initElements(driver, this);
}
}
smallbusinesspage.java文件
public class SmallBusinessPage extends TestBase{
@FindBy(xpath = "//header//div[@id='masthead']")
public Header HeaderSmallBusiness;
public SmallBusinessPage() {
PageFactory.initElements(driver, this);
}
}
收割台
public class Header extends TestBase{
@FindBy(xpath="//a[normalize-space()='Enroll']")
WebElement LinkEnroll;
public Header() {
PageFactory.initElements(driver, this);
}
}
页脚
public class Footer extends TestBase {
@FindBy(xpath="//footer//a[text()='Careers']")
public WebElement LinkCareers;
public Footer() {
PageFactory.initElements(driver, this);
}
}
试验基地
public class TestBase {
public static WebDriver driver;
public static Properties prop;
Header header = new Header();
public TestBase(){
try {
prop = new Properties();
FileInputStream istream = new FileInputStream("C:\\QA -Selenium\\WS\\WellsFargoTest\\src\\main\\java\\com\\wellsfargo\\qa\\config\\config.properties");
prop.load(istream);
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
public static void initialization() {
String browserName = prop.getProperty("browser");
if(browserName.equals("chrome")){
System.setProperty("webdriver.chrome.driver","C:\\Selenium\\chromedriver");
driver =new ChromeDriver();
}
if(browserName.equals("FF")){
System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver");
driver = new FirefoxDriver();
}
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(TestUtility.PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(TestUtility.IMLICIT_WAIT, TimeUnit.SECONDS);
driver.get(prop.getProperty("url"));
}
}
测试用例开发
public class TestCaseDevelopment extends TestBase{
HomePage homePage;
public TestCaseDevelopment() {
super();
}
@BeforeMethod
public void setup() {
initialization();
homePage = new HomePage();
****homePage.HeaderHomePage.l****
}
}
1条答案
按热度按时间cig3rfwq1#
按照标准惯例,您必须创建一个名为
BaesPage.java
在整个应用程序中保留所有公共定位器。所有页面对象将扩展该类,以便所有公共定位器可用于所有页面对象。请看一看。基本页.java
现在您不需要header.java和footer.java这两个独立的类,因为它们在整个应用程序中都有共同的定位器,所以可以在basepage.java中移动它们
主页.java
测试库.java
测试用例开发