ウェブページの自動テストを作成しようとしています。 Webページにはフィルタフォームとテーブルがあります。表には、データを提示するための5-6の異なる方法があります。セレンテストで操作を一般化する
データ提示方法ごとにPageObjectsを作成しました(すべてが異なる列のテーブルだけです)。今私はテーブルを見つけることができ、それから行を尋ねることができるこの汎用Pageobjectを持っています。
しかし、私はテーブルのすべての行をフェッチするコードの作業を取得することはできません。
public <T> List<T> getAllRows(){
List<AbstractTableRow> allRows = table.findElements(By.xpath("//tr[@role='row']").className("jqgrow")).stream()
.map(AbstractTableRow::new).collect(Collectors.toList());
if(allRows != null) {
return (List<T>)allRows;
}
return null;
}
概要TableRowは他のすべての行の親です。しかし、実際に抽象クラスではありません(私はその方法を試してみて、ジェネリックの厄介なビジネスに終わってしまいました。だから今私は、子供を親に捨て去るために何かを必要とするか、または誰かが反射とジェネリックを使って(私は再びAbstratTableRowの要約を作ることができる)例を挙げることができます。すべてのtablerow型はWebElement型であり、すべてのrowobjectはコンストラクタとして
public SomeRow(WebElement element)
を持っています。メソッドはListを返す必要があります。ここで、SomeRowは5-6行のいずれかの型です。
は思えます。少し問題を正確にすべて(これは非常に読み取り可能な一般的な+反射)ロジックを解決する混乱する? – Kudin