Selenium - объектная модель страницы против определения publi c stati c final - PullRequest
1 голос
/ 16 января 2020

В Selenium мы можем поддерживать репозиторий объектов как объектную модель страницы. Но мы можем поддерживать ИЛИ через отдельный класс, определив переменные как publi c stati c final и использовать в других классах всякий раз, когда потребуется.

, например,

package ObjectRepository;

public class OR_SFStandard 
{ 
   public static final String NewBtn = "//a[@title='New']";
}

и использовать такой же код в

package common;
import ObjectRepository;

public class Deal 
{
    public void newDeal(WebDriver driver)
    {
    driver.findElement(By.xpath(ObjectRepository.NewBtn)).click();
    }
}

Может кто-нибудь, пожалуйста, помогите мне понять разницу и что лучше?

Ответы [ 2 ]

0 голосов
/ 16 января 2020

По вашему вопросу, и на основании моего опыта, поскольку я использовал оба. Я бы порекомендовал использовать стандартную практику ПОМ. Главной особенностью ПОМ является простота обслуживания.

У вас есть локаторы на объекте страницы, поэтому вы можете видеть их по страницам и исправлять в случае возникновения проблем. Общие локаторы являются частью объекта базовой страницы, поэтому вы можете получить все общие локаторы для объекта базовой страницы.

В случае, если ИЛИ управляется в отдельном классе, тогда

Предположим, если вы если у вас есть 200 тестовых случаев, 40-50 объектов Page, и вы храните все локаторы (скажем, 500) в одном классе, тогда будет очень трудно управлять и отлаживать, чтобы решить проблему. Это также создаст путаницу.

0 голосов
/ 16 января 2020

Я бы сказал, что это вопрос предпочтений. Мне нравится иметь все связанные данные в одном классе POP. Другие предпочитают иметь отдельный файл с этими файлами.

Некоторые могут подумать, что хранилище позволяет им повторно использовать элементы, которые совместно используются на разных страницах, ограничивая дублирование. Но это не должно быть так. Если вам нужно разделить элементы между POM, это означает, что вы реализовали это неправильно. Даже если речь идет о таких элементах, как нижние колонтитулы, menus et c.

. В этом случае вам следует подумать о Patter объекта Feature и реализовать все действия и ИЛИ там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...