2016-11-06 11 views
0

私はページを開くためにSeleniumを使用しています。ページを開いた後、何らかの種類のリフレッシュボタンをクリックしたいと思います。私はそれをクリックすると、イムは、このエラーを取得:JavaScript - Selenium Webdriver。要素が表示されているかどうかをチェックする方法

ElementNotVisibleError: element not visible

これは私がボタンをクリックするために使用するコードです:

driver.findElement(By.id(id)).click();

私の推測では、それが押されたときにボタンが表示されていない行くことです。そしてそれはおそらく目に見えなくなってしまうかもしれません。それは、完全なページリフレッシュを行いません。

セレンが目に見えるかどうかを確認する方法はありますか?

編集: 同じIDを持つ複数のボタンがあります。私が手を差し伸べようとしているボタンが途中にあります。私はBy.xpathとボタンを見つけようとしましたが、私はまだそれを見つけることができませんでした。私がやったやり方は、idでボタンを検索することでした。これは//button[contains(@id, 'abc')][1]です。 (別の番号のコース)。

Seleniumは要素を見つけることができませんでしたが、Chromeデベロッパーツールで見つけることができました。助言がありますか?

+0

すべてを試しても失敗した場合は、ボタンを見つけてください。 ご注意ください。ときには、ブラウザが起動しすぎてボタンが表示されないことがありますが、ウィンドウの表示領域外です。 Webドライバはそれをクリックできません。 – vothaison

+0

私はこれを試しましたが、要素を見つけた後でもまだ表示されていないというエラーが表示されます。 \\ id: '+ _ id);' 'driver.findElement(By.id(id))で要素を見つけることができません。クリック(); ' – Kims

+0

ページを読み込む前にウィンドウを最大化しよう – vothaison

答えて

0

解決策:sysoにこのコードを使用して試すことができます1

System.out.println("getting Page Source "+driver.getPageSource()); 

この方法は、ページ全体を返します。 Sourceあなたのボタンがソースに存在するかどうかを確認することができます。上記のコードを関数のいくつかの点に置き、ソース内のボタンを見つけるまでチェックすることができます。

解決方法:2ボタンがソースに存在しない場合は、ボタンがiframeに読み込まれているかどうかを確認してください。そうであれば、次のコードを使用してiframeに切り替えてください。

driver.switchTo.frame(frameName); 
+0

ありがとう、私は今日後であなたのsollutionsを試してみます。私はJavaではなく、JavaScriptを使用しています。そして本当にJSには新しい。あなたはまた、JSでそれを行う方法を知っていますか? – Kims

+0

あなたはjavascriptでSeleniumコードを書いていますか?もしそうなら、代わりに警告を使うこともできますし、F12でデバッグしてチェックすることもできます。 – GraveyardQueen

+0

アラートの使用: アラート(「ページソースの取得」+ driver.getPageSource()); F12を使用する: – GraveyardQueen

0

要素/ボタンがクリック可能であることを明示的に確認するために使用できます。 (ExpectedConditions.visibilityOfElementLocated(ID))この
wait.untilをやってみ は

+0

ありがとうございますが、私はすでにドライバが要素を見つけるのを待つ待機関数を持っています。 'driver.wait(until.elementLocated(By。id = id + id); ' – Kims