Инициализацията на обект е единствената разлика между POM и Page Factory в Selenium?


Отговор 1:

Следната информация е взета от JavaDoc клас PageFactory на метода initElements ():

публична статична T initElements (драйвер за WebDriver, клас pageClassToProxy) {T page = instantiatePage (драйвер, pageClassToProxy); initElements (драйвер, страница); страница за връщане; }
  • Незабавен екземпляр от дадения клас и задайте мързелив прокси за всеки от WebElement и List полета, които са декларирани, като се предполага, че името на полето е също „id“ или „име“ на HTML елемента.

Това означава, че за класа:

Страница за публични класове {частни подаване на WebElement; }

ще има елемент, който може да бъде разположен с помощта на израза xpath

// * [@ id = 'submit'] "или // * [@ name = 'submit']
  • По подразбиране елементът или списъкът се търси всеки път, когато се извиква метод. За да промените това поведение, просто пояснете полето с пояснението CacheLookup. За да промените как се намира елементът, използвайте пояснението FindBy.

------------------------------

Така че, когато използвате PageFactory,

  1. WebElement или списък променливите са декларирани като частни в обекта на страницата обект Ако променливата WebElement има същото име с идентификатора на уеб елемент или атрибута име, няма нужда да указвате локатор за елементаИначе, локаторът на елементите се определя с метод FindBy annotationinitElements () задава мързелив прокси за всеки уеб елемент от класа обект на страницата; този прокси свързва уеб елемента с неговия локатор; но уеб елементът още не е търсен, когато елементът се използва (като се извикат методи на него като click (), getText (), isEnabled () и т.н.), се случва следното: локатора, свързан с уеб елемента по време на класа на страницата инициализацията е извлечена; елементът се търси в браузъра, ако елементът бъде намерен, кодът взаимодейства с него, ако не искате елементът да бъде търсен в доме на браузъра всеки път, когато се използва, анотацията за CacheLookup може да се използва; в този случай елементът се кешира, след като бъде намерен за първи път

Това е само кратката история на Page Factory.

Много е полезно да прочетете кода и да се опитате да разберете как работи.

Това направи чудеса за мен, тъй като, за да разбера какво прави кодът, трябваше да науча неща, които не познавам добре, като например

  • genericsreflectionlazy инициализацияпрокси класове

Отне известно време, за да го разбера, но много се радвам, че го направих.

Късмет!

Хареса ли ви тази статия и искате да прочетете повече?

Вижте моя нов блог Quora:

Селен Съвети и трикове


Отговор 2:

В POM (Page Object Model) създавате нов клас за всяка нова страница / URL и поставяте всичките си методи за идентификация на елементи в нея.

Page Factory е анотация вътре в селена, който го давате на класа. Така че, когато дефинирате всеки клас като фабрична страница, всичките ви елементи вътре в класа ще се заредят, докато се извиква всеки елемент от класа. Th

PS - Page Factory изглежда наистина лоша практика, ако имате много елементи в даден клас и използвате само един.