回答編集履歴

1 コメント書き忘れてました><*

SKYYFISH

SKYYFISH score 596

2015/10/02 21:13  投稿

JSで実装されているコンテンツがSNSボタンだけなら、
HTMLを受け取った時点で時間計測を終了させれば良さそうですね。
ExpectConditionメソッドを使うと、
指定の要素が取得できた時点でsleepを中断するという動作が実現できます。
挙動としては、1つインスタンスを立てて findElements() をぐるぐる回して、
見つかったら元のテストケースに値を返す。みたいな大層な事をやってるのですが、、、
でも、以下のようなコードで簡単に実装できます。
```ruby
#指定の要素が見つかるまで最大で30秒待つコード
WebElement myDynamicElement = (new WebDriverWait(driver, 30))
.until(new ExpectedCondition<WebElement>(){
public WebElement apply(WebDriver d) {
  #
  # find_elementが完了した時点でwaitループから抜け出す。
  return d.find_element_by_xpath("/html/body/form[1]")
}
});
```
他にもJSで実装しているコンテンツがあってそっちの方が重たいならば、
findElementsの対象をJS内のコンテンツに当てれば良いかなぁと思います。
参考:
How to wait for images to be fully loaded after click
http://stackoverflow.com/questions/14700123/selenium-webdriver-ruby-how-to-wait-for-images-to-be-fully-loaded-after-clic

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る