2017-05-09 4 views
0

私はいくつかのセレンJavaコードに取り組んでいると私は以下のようにexecuteScriptを使用してJavaScriptコードを実行していた場合はJavaScriptクリック:真クリックリターンでない場合はfalse

 WebElement menu = driver.findElement(By.cssSelector(string1)); 
    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", menu); 

私が行うことができるようにしたい何が検出され要素がクリックできる場合、ボタンが無効な場合、clickイベントは発生しませんので、フラグが必要です。 JSの問題は、clickイベントがundefinedを返すことです。

だから私は例えば、私のexecuteScript内部フラグが必要になります。

 Object flag_to_stop = ((JavascriptExecutor) driver).executeScript("<<something here if returns true string else returns false string>>, menu); 

    while (Object.toString.equals(<<true string>>)) 

それから私は、whileループを実行することができますし、flag_to_stopがfalseの場合、私は破ることができます。

提案はありますか?

これは主にJavaScriptの質問です。すべてのJavaコードが提供されています。

+0

私は未定義のエラーは、あなたがまだ作成する必要があるオブジェクト上のイベントを呼び出すようにしようとしている意味と思うだろう。スクリプトを実行する前に実際に存在するかどうかを判断することは良いスタートになります。 – Icewine

+0

['WebElement.isEnabled()'](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html)を使用してクリックする前に、要素が有効かどうかを確認できます。 #isEnabled--) –

+1

myButtonという= driver.find_element_by_id( "buttonId") (myButton.is_enabled場合): myButton.click() これはそれを行う必要があるとすることができますようにあなたがJavascriptExecutorを使用している具体的な理由があります同じことをするにはセレンを使います。 –

答えて

0

次試すことができます。

boolean flag_to_stop = false; 
    try{ 

    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", menu); 

    flag_to_stop = true; 
    } 
    catch{Exception e){ 

    flag_to_stop = false; 
    } 
関連する問題