現在、以下のクラスでPageFactoryを使用して、私が使用する要素を初期化しています。Selenium PageFactoryのフレームワークへの配置
基本クラス:
public class BaseClass {
public static WebDriver driver;
public static boolean bResult;
public BaseClass(WebDriver driver){
BaseClass.driver = driver;
BaseClass.bResult = true;
}}
ログインページClasssの要素を保持している:
public class LoginPage extends BaseClass{
public LoginPage(WebDriver driver)
{
super(driver);
}
@FindBy(how= How.XPATH, using="//input[@placeholder='Username']")
public static WebElement username;
は、その後、私は私の行動のために別々のログインクラスを使用します。
public class Login {
//Login
public static void enterUsernamePassword(String username, String password) throws Exception{
LoginPage.username.sendKeys(username);
LoginPage.password.sendKeys(password);
}
その後、私の手順クラス:
@When("^I enter a valid username (.*) and password (.*)")
public void I_enter_a_valid_username_and_password(String username, String password) throws Throwable
{
PageFactory.initElements(driver, LoginPage.class);
Login.enterUsernamePassword(username, password);
}
ご覧のとおり、私はPageFactoryをステップクラス内で使用しています。私はこれをやって嫌い、PageFactoryをどこか別の場所に配置したいと思っています。
クラスを追加または削除しないで、どこでPageFactoryクラスを配置できますか?どんな助けもありがとう。
こんにちは、このリンクを確認してください - http://stackoverflow.com/questions/43727174/where-should-the-page-objects-be-instantiated –
キュウリを使用しているので、DIフレームワークインスタンスを管理するには、picocontainerにコードの変更を必要とせず、コンストラクタインジェクションを使用して、キュウリの箱から出てきます。 pomに依存関係を追加するだけです。 LoginPageとLoginクラスを持つ目的は何ですか?それらを1つに結合して、webelementsの静的キーワードを削除します。ページオブジェクトのコンストラクタでpagefactoryコードを使用します。 – Grasshopper
余分なクラスを削除し、その代わりにPageFactoryをコンストラクタに配置しました。 –