9

ユーザーがスクロールせずに現在のWebブラウザービューで要素を表示できるかどうかを確認したいと思います。

私が見つけたものは、要素がページのどこかにあるかどうかを確認できます。

要素の位置を確認するための別のヒントが提案されましたが、ブラウザの表示ウィンドウのサイズに加えて、そのx/yオフセットを0/0に取得する必要があります。

誰かがJavaScriptコードを必要としない解決策を教えてくれたらありがたいです。

4

1 に答える 1

2

「ユーザーに見える」をどのように定義しますか? どのようにそれをチェックすることを提案しますか? 高さがあれば?CSSで隠されていなければ?親要素が CSS によって隠されている場合はどうなりますか?

最も信頼できる方法は、Selenium の組み込み.Displayedプロパティ (C# を使用している場合、Java にも同様のものがあります) を使用し、それを jQuery の「可視」セレクターhttp://api.jquery.com/visible-selector/と組み合わせることです。以下の C# の例。

var element = Driver.FindElement(By.Id("test"));
bool isVisible = element.Displayed;
var javascriptCapableDriver = (IJavascriptExecutor)Driver;
bool jQueryBelivesElementIsVisible = javascriptCapableDriver.ExecuteScript("return $('#myElement').is(:visible);");
bool elementIsVisible = isVisible && jQueryBelievesElementIsVisible;

これは、ほとんどの場合を取得します。

クライアント側のコードなしでは不可能です。または、他の誰かがサーバー側の言語で実行できる方法を見つける準備として、それがきれいで、読みやすく、信頼できるものになるとは思えません。

jQuery には次のoffset()メソッドがあります。

http://api.jquery.com/offset/

ただし、境界線や余白などを考慮すると、これは機能しません。

于 2012-12-06T16:55:10.503 に答える