0

私は最近 Selenide を使い始めました。Selenide が可能にする流暢なコードが気に入っています。ただし、ElementsCollection には奇妙な問題があります。

$$("some ref").filterBy(not(attribute("an-attr-that-should-not-be"))).getTexts()

このクエリは断続的に stringifiedStaleElementReferenceExceptionsを返しますが、その理由がわかりません。

デバッガーでクエリを実行すると、有効な値が返されますが、通常の実行時 (シングル スレッド アプリケーション) では、これが得られます。

ターゲット要素は、GWT コンボ ボックスの結果リストです。

誰かが私を正しい方向に向けてもらえますか?

更新: 関連する場合は、InternetExplorerDriver を使用しています。

4

3 に答える 3

1

Chrome と ChromeDriverStaleElementReferenceExceptionは、テストのポイントのように具体的に起動します。要素が表示されなくなると、その要素へのWebElement参照が無効になり、再度調べる必要があります。コンボが表示/非表示または変更されている場合、これらが原因である可能性があります (具体的には、どのコンボと何が原因であると思われるかについての詳細が必要です) - 参照を何度も再利用するのではなく、使用する予定のときに要素を検索してみてください.

于 2015-10-27T22:24:07.810 に答える
0

問題が見つかりました。どうやら、SelenideElementsCollectionは以前のバージョンの要素リストをキャッシュしていたようで、更新が予想よりも大幅に遅く、テキストを取得する際にこのゴースト データにアクセスしようとしていました。

クラス ヘッダーの通常の静的定数の代わりに、リストが反復される $$ を使用することで修正されました。

于 2015-11-10T10:24:27.423 に答える