2011-12-14 6 views
2

Webページ上のすべての目に見える要素をクリックする必要がありますが、表示されている各要素を確認するには時間がかかりますか?セレン法。チェックを避けるために可視要素だけで配列を作成する別の方法がありますか?ウェブページ上のすべての目に見える要素を取得

と思われます。私は火の巣から非灰色の要素だけが必要です。目に見えない要素のすべてではないが、そのような属性を持っているので

//*[not(contains(@style,'display:none'))] 

要求は、私の問題を解決していません。

+0

は、これらの入力、アンカータグ、または任意のランダム要素、またはいくつかの組み合わせですか? – CBRRacer

答えて

0

これはタグ付けされていませんが、jQuery visible selectorを使用していることを知っています。:visibleと同じくらい簡単です。

+0

これはセレンでうまくいきません – CBRRacer

+0

@CBRRacer:いくつかのカジュアルなGoogleの検索によると、jQueryをSeleniumにフックできますが、Seleniumを自分で使用していないのはどういうことでしょう。 – BoltClock

+0

jQueryセレクタは、Seleniumによってネイティブにサポートされていません。これだけでは良い答えではありません。 – BoltClock

2

C#.NETを使用している場合は、ラムダ式を使用して表示されていない要素を削除できます。そうでなければ、これはうまくいかないでしょう。これにより、アンカーエレメント、入力エレメント、および選択エレメントが1つずつ表示されます。その後、表示されなかったものはすべて削除されます。

browserDriver.Navigate().GoToUrl("http://www.yahoo.com/"); 
List<IWebElement> theseElements = browserDriver.FindElements(By.TagName("a")).ToList(); 
theseElements.AddRange(browserDriver.FindElements(By.TagName("input")).ToList()); 
theseElements.AddRange(browserDriver.FindElements(By.TagName("select")).ToList()); 
theseElements.RemoveAll(i => !i.Displayed); //LAMBDA EXPRESSION 
foreach (IWebElement element in theseElements) 
{ 
    element.Click(); 
}