2014-01-10 5 views
0

im confused :(в качестве рамки автоматизации, если я использую объект страницы/фабрику, чем я должен использовать репозиторий объектов. Я имею в виду файл свойств в selenium webdriver. ИЛИ Я могу использовать по одному на любой странице фабрики или свойств файл подходPage Factory with properties

им с помощью этого кода:

package Pages; 
import java.util.Properties; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.support.FindBy; 
import org.openqa.selenium.support.How; 
import org.openqa.selenium.support.PageFactory; 

public class LoginPage { 

final WebDriver driver; 
static Properties prop = new Properties(); 

@FindBy(how = How.ID, using = "form-login-username") 
private WebElement usernameEditbox; 

@FindBy(how = How.NAME, using = "password") 
private WebElement passwordEditbox; 

@FindBy(how = How.NAME, using = "Log In") 
private WebElement loginButton; 

public LoginPage(WebDriver driver) { 
this.driver = driver; 
} 

public void enterUsername(String login) { 
usernameEditbox.clear(); 
usernameEditbox.sendKeys(login); 
} 

/*public void enterUsername(String login) { 
    signInUsername.clear(); 
    usernameEditbox.sendKeys(login); 
    }*/ 

public void enterPassword(String password) { 
passwordEditbox.clear(); 
passwordEditbox.sendKeys(password); 
} 

public void clickSigninButton() { 
loginButton.click(); 
} 
public LandingPage login(String login, String password) { 
enterUsername(login); 
enterPassword(password); 
clickSigninButton(); 
return PageFactory.initElements(driver, LandingPage.class); 
} 
} 

Вместо об определении @FindBy (как = How.ID, используя = "форм-логин-имя пользователя") частный WebElement usernameEditbox, в том же файле хау. я могу назвать это из OR.properties ???

ответ

0

Если вы следуете шаблону объекта страницы, теоретически каждый селектор будет существовать только один раз. Поэтому приемлемо подвергать их жесткому коду в классе объектов страницы, а не создавать какой-то репозиторий или внешний ресурс.

0

Вот suggestion Я сделал кому-то еще, используя шаблон объекта страницы.

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

Edit: Пример класса элементов:

@FindBy(css = "button[id='Save']") 
public static WebElement buttonSave; 

@FindBy(css = "button[id='Cancel']") 
public static WebElement buttonCancel; 

И так далее. Класс elements предназначен только для ваших элементов. Затем вы используете эти элементы через пример PageFactory.init, показанный в приведенной выше ссылке. Было бы предпочтительно иметь отдельный класс элементов для каждой «страницы». Я надеюсь, что это достаточно ясно :)

+0

эй спасибо может у поделиться сценарии MyHomePageElements.class согласно вашей ссылке предложение. – user3181664

+0

Отредактировано мое сообщение, чтобы показать вам пример класса элементов. – NaviSaysListen

0

Взгляните на Test Automation Framework (TAF), которые имеют расширенную реализацию Object Object Factory. Это позволит вам использовать файл свойств для ваших локаторов для ваших классов Factory Factory.

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

http://menonvarun.github.io/taf/

http://menonvarun.github.io/taf/pages/locator_in_taf.html