2015-09-10 3 views
1

Я новичок в автоматизации селенов webdriver. Я использую язык программирования Java и начал следить за объектной моделью страницы. Я хотел бы знать основную файловую структуру и как ее переносить.Selenium WebDriver Страница предметной модели

Практические примеры будут очень полезными. Если кто-то может поделиться своими образцовыми проектами, это будет высоко оценено. Спасибо

+0

Была ли вы объектной моделью страницы google? Там есть множество ссылок ... один из которых [на сайте селена] (https://code.google.com/p/selenium/wiki/PageObjects) – JeffC

ответ

0

Ниже представлена ​​небольшая демонстрация того, как вы можете продвигать объектную модель страницы с использованием Java и Selenium.

Я создал два класса. Один класс будет использоваться для хранения всех веб-элементов на странице, а другой класс будет использоваться для доступа к веб-элементам этого класса для выполнения намеченных операций.

Примечание:Сайт - это класс, созданный для хранения веб-элементов.

public class Homepage { 
    private static WebElement element = null; 
    public static WebElement Generic_Search(WebDriver driver){ 

     element = driver.findElement(By.id("searchTerm")); 
     return element; 
     } 

    public static WebElement Generic_Search_Count(WebDriver driver){ 

     element = driver.findElement(By.xpath("//div[@class='facet-count']/strong")); 
     return element; 
     } 
    public static WebElement Generic_Search_Submit(WebDriver driver){ 

     element = driver.findElement(By.className("search-submit")); 
     return element; 
     } 
} 

Примечание: Simple_User_Flow класс будет использоваться для доступа к веб-элементы из Главная

public class Simple_User_Flow { 
    private static WebDriver driver = null; 

    public static void main(String[] args) { 

    driver = new FirefoxDriver(); 
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    driver.get("http://materials.springer.com/"); 
    driver.manage().window().maximize(); 
    Homepage.Generic_Search(driver).click(); 
    Homepage.Generic_Search(driver).sendKeys("Mercury"); 
    Homepage.Generic_Search_Submit(driver).click(); 
    WebElement Search_Count = Homepage.Generic_Search_Count(driver); 
    String Count = Search_Count.getText(); 
    System.out.println(Count + " Results found for your Search"); 
    driver.close(); 
} 
} 

Помните, что это очень просто демо, Вы можете добавить несколько классов и использовать их в основной класс. мы можем группировать классы в соответствии с их функциональностью или структурным потоком.

+0

Вместо того, чтобы разоблачать все эти отдельные элементы, вам было бы лучше просто разоблачить один метод поиска (String searchString), который берет строку поиска, помещает ее в поле поиска и клики ищут пользователя. Это позволит очистить/упростить ваш API. Как правило, пользователям не нужен доступ к отдельным элементам, они более похожи на то, какие действия будут предпринимать пользователь на этой странице, и предоставить методы, позволяющие им выполнять эти действия. – JeffC

+0

@JeffC: 100% верно и согласен. Но я думал, что дать очень простое и простое демо, чтобы пользователь знал, как структура класса будет в POM, и да всегда хорошо просто API, путем преобразования общих действий в один метод. Еще раз спасибо за то, что вы включили свой ценный комментарий ниже моего ответа, который будет иметь смысл. –

1

Вы можете следить за мой ответ на этот URL: Automation Testing Framework

я пытался объяснить это в очень простой форме.

Также для справки вы можете следовать приведенному ниже URL, который объясняет то же самое. http://www.guru99.com/page-object-model-pom-page-factory-in-selenium-ultimate-guide.html

+0

@uziii, пожалуйста, ответьте, если какой-либо из приведенных выше ответов решает вашу проблему. Пожалуйста, отметьте ответ как принятый. –

0

объекты Страницы хорошо известный шаблон проектирования, широко принят инженерами автоматизации, чтобы создать отдельный файл класса для каждой страницы приложения сгруппировать все элементы в качестве свойств и их поведение/бизнеса-функции как методы из класс. Но у него мало проблем при создании класса для страницы - особенно, когда на странице больше/разных наборов элементов/сложных элементов, таких как виджет сетки/календаря/таблица HTML и т. Д.

Класс может содержать слишком много обязанностей обрабатывать. Он должен быть реструктурирован и разбит на более мелкие классы. То есть, следуя Ответственной за единую ответственность.

Проверьте изображение здесь.

Page Fragments

То есть, создавать повторно используемые фрагменты страниц & пусть основной объект страницы служат фрагменты страниц.

Проверьте, пожалуйста, here.

Смежные вопросы