0

ランダムな要素が選択されたWeb要素のリストがあります。ランダムな Web 要素ができたので、その中のすべての子要素を見つける必要があります。pagefactoryでこれを達成するにはどうすればよいですか。

セレンでは、これは機能していました:

List<WebElement> listOfElements = driver.findElements(By.xpath("//locator"));

WebElement randomElement = // Code to get a random element out of this list.

String title = randomElement.findElement(By.xpath(".//[@id='title']"));

ページファクトリーで、私は試しました:

@FindBy(xpath="//locator")

List<WebElement> listOfElements;

@FindBy(id="title");

WebElement title;


WebElement randomElement = // Code to get a random element out of this list.

ページ ファクトリ アノテーションを使用してランダム要素でタイトルを取得する方法に行き詰まりました。

私はこれがうまくいくことを知っています:

String title = randomElement.findElement(By.xpath(".//[@id='title']"));

プロジェクト全体でページ ファクトリ アノテーションを使用しているため、同じことを達成する方法はありますか。

4

2 に答える 2

0

おそらくあなたには遅すぎますが、他の人に役立つ場合: これを行うことは可能ですが、単純ではなく、WebDriver の内部クラスの一部をカスタマイズする必要があります。

今年初めのブログ投稿で、「ブロック」クラスを使用してこの問題を解決する方法について説明しました。これは些細なことではありませんが、掘り下げて自分で使用したい場合に使用したコードを含むgithub プロジェクトがあります。

本質的には、配置された WebElement のそれぞれを使用して、ブロックと呼ばれる新しい「PageObject」クラスを生成します。各ランダム要素が同じである限り、PageFactory 表記を使用して子 WebElement を見つけることができます。

これらすべてにかなりのオーバーヘッドがあることに注意してください。そのため、単にタイトルを取得しようとしている場合は、チェーンされた findElements() 呼び出しでストリーム API を使用する方がはるかに優れています。

于 2018-09-17T22:01:54.930 に答える
0

Web 要素のリストを返すページ オブジェクトでパブリック メソッドを作成します。

public List<WebElement> getTitles(WebElement randomElement) {
    return randomElement.findElements(by.id("title"));
}
于 2018-08-07T14:11:15.917 に答える