Я пытаюсь автоматизировать веб-тесты с использованием Selenium и JAVA,
У меня есть веб-приложение с определенными разделами, такими как верхний и нижний колонтитулы, повторяющиеся на нескольких страницах. Я использую объектную модель страницы, создавая файл класса страницы для каждой веб-страницы. Все веб-страницы имеют одинаковый верхний и нижний колонтитулы.
Я создал два файла классов страниц, HomePage. java и SmallBusinessPage. java и два отдельных файла классов для компонентов верхнего и нижнего колонтитула, Header. java и Footer. java. Эти файлы находятся в отдельном пакете, чем файлы классов страниц. Мой файл класса теста - TestCaseDevelopment. java, а базовый класс - TestBase. java. Мне нужно получить доступ к ссылке заголовка 'enroll' (локатор которой находится в файле Header. java) из класса TestCaseDevelopment. java с помощью объекта HomePage. (HomePage содержит локатор HeaderHomePage, который находит весь заголовок на веб-странице. Локатор LinkEnroll в заголовке. Файл java находит ссылку в заголовке. Поэтому полный локатор для ссылки - 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);
}
}
TestBase
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"));
}
}
TestCaseDevelopment
public class TestCaseDevelopment extends TestBase{
HomePage homePage;
public TestCaseDevelopment() {
super();
}
@BeforeMethod
public void setup() {
initialization();
homePage = new HomePage();
****homePage.HeaderHomePage.l****
}
}