2

たとえば、このアノテーションが付いたクラスFanPageがあるとします。

@FindBy(how = How.ID, using = "ctl00__lvph_Add")
private WebElement _AddFanButton;

そして私のテストコードで私は言います

fanPage = homePage.GoToFanPage()

これは

return PageFactory.initElements(driver, CC_VendorStatisticsMetadata.class);

これで、注釈が正しくない場合(たとえば、ctl00_lvph_AddFanである必要があります)、initElementsの呼び出しが失敗することが予想されます。ただし、そうではなく、FanPageオブジェクトを返すだけです。_AddFanButtonを使用しようとした場合にのみ失敗します。

PageFactoryに最初から注釈を検索させるにはどうすればよいですか?

4

1 に答える 1

7

あなたはそうしない。PageFactory怠惰な初期化を行い、それが設計された方法です。

何らかのアクションが実行されるまで、特定の要素がページに存在しないページオブジェクトについて考えてみます。ページオブジェクトは、ページ上の要素だけでなくビジネスロジックをカプセル化することを目的としているため、これは完全に論理的なシナリオです。その場合、initElements()呼び出しは毎回ページオブジェクトの初期化に失敗し、要素が表示される原因となるビジネスロジックメソッドを呼び出す機会が与えられません。

PageFactoryこれがテストフレームワークの要件である場合、が機能しない可能性があります。その場合は、独自の実装を構築することをお勧めします。

于 2012-12-14T02:05:06.333 に答える