2013-08-10 2 views
0

В настоящее время я храню свои местоположения элементов в отдельном классе вдали от их методов доступа, и я ищу более эффективный способ их хранения. Из того, что я прочитал, Enum, если идти. Мои вопросы - мое предположение верно? и как его реализовать? Ниже приведен небольшой пример того, как она работает сейчас:Сохранение постоянных элементов webdriver в enum

Элементы класса:

public class GeneralJobElements { 
    protected By ProcurementWorkFlow = By.name("procurementWorkflow"); 
    protected By JobOwner = By.name("jobOwner"); 
    protected By JobTitle = By.name("i18n_jobTitle_minimized"); 

}

Accessor класс:

public class CreateJobGeneralTabActions extends GeneralJobElements { 
    public CreateJobGeneralTabActions selectJobOwner(int index) { 

    logMessage(JobOwner, "Job Owner"); 
    Select sele = new Select(getWebElement(JobOwner)); 
    sele.selectByIndex(index); 

    return this; 
} 

общественного CreateJobGeneralTabActions fillJobTitle() {

logMessage(JobTitle, "Job Title"); 
    getWebElement(JobTitle).sendKeys(JOB_TITLE); 
    logger.info("The job title is: " + JOB_TITLE); 

    return this; 
} 

public CreateJobGeneralTabActions selectJobApprovalWF(int index) { 

    logMessage(ProcurementWorkFlow, "Procurement Workflow"); 
    Select sele = new Select(getWebElement(ProcurementWorkFlow)); 
    sele.selectByIndex(index); 

    return this; 
} 

Мне не нравится идея, что я расширяю класс элементов

+0

Где вы узнали, что использование Enum было бы полезно? –

ответ

2

Я не думаю, что хранение локаторов в Enum - хорошая идея, и не хранит локаторы в файлах свойств. У обоих есть проблемы. Вместо этого я бы рекомендовал вам использовать PageFactory, который поддерживает PageObjects.

  1. Для отладки, обновления, добавления элементов вам необходимо перейти к файлам или перечислениям внешних свойств. В PageFactory, элементы будут аннотированный с @FindBy аннотациями и они прямо в странице объекта, так что вы можете легко работать с ними
  2. PageFactory найдет элементы для вас, таким образом избегая накладных расходов driver.findElement или driver.findElements шаблонного код
  3. Когда PageFactory не найдет элемент, он выкинет исключение, ТОЧНО ТОЧНО, где он не удался.
  4. PageFactory может поддерживать загрузку элементов, кеширование и т. Д. С вашей стороны не требуется кодирование
  5. Поддержание файлов свойств - это боль, они быстро растут, вы можете добавлять повторяющиеся ключи и т. Д. Также накладные расходы на разбор и чтение ключей. Все это можно было бы избежать, если использовать PageFactory

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

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