Protractorで要素の出現を待ち、処理する。

Protractorでスクレイピングしたい時に、対象がJSによって追加される要素だったり、JSに追加された要素を用いて遷移しなきゃいけないなんてことはよくある。
そんな時はどうすりゃいいのかなーと、今まではwait()を使ったりsleep()を使ったりして秒数で待機とかしていた。 でもいけてないよなーとおもってきちんと調べ直してみるとimplicitlyWait()なんちゅーものがあった。

こ れ だ !

implicitlyWaitとは

Specifies the amount of time the driver should wait when searching for an element if it is not immediately present.  

Elementを検索するときに、通常element(loc)をコールしたときにDOMに存在しなければErrorとなるが、この値を設定しておくと、待機してくれる。

コード

browser.driver.manage().timeouts().implicitlyWait(3000)  
button = $("#btnLogin")  
button.click()  

この例だと#btnLoginをDOMから探す時、3秒待機することになる。  Protractor「三秒間まってやる」
いじょ