2017-06-30 18 views
0

最終編集:.isEmpty()はその仕事をしたときに、それはelse声明に行くために40秒を待っていただけで、私は40秒に私の暗黙の待ち時間を設定していたことに気づい。すべての助けに感謝します。要素が他にやるセレンにBを行う場合にはJavaの

問題は、if文に到達してそこにのみ置かれ、何もしないことです。 elementIdはifテストを削除すると、両方のコードが動作するように動作します。私が試してみました一つの方法:

if(!driver.findElement(By.id(elementId)).isDisplayed()){ 
    driver.findElement(By.id(downloadId)).click(); 
    TimeUnit.SECONDS.sleep(7); 

}else{ 
    CenterOnClick.testFail(elementId , driver);  
    FailScreenShot.test(caseId, driver, targetNumberCell); 

} 

別の方法:(フィナーレ編集:この1つは、この問題のために働く

if(driver.findElements(By.id(elementId)).isEmpty()){ //also used .size() > 0 
    driver.findElement(By.id(downloadId)).click(); 
    TimeUnit.SECONDS.sleep(7); 

}else{ 
    CenterOnClick.testFail(elementId , driver);  
    FailScreenShot.test(caseId, driver, targetNumberCell); 

} 

は私も周りに切り替える事を試してみました。クリックしようとしているボタンは、1か月に2回以上ファイルをダウンロードしていない場合にのみ使用できます。その後、エラーメッセージが表示されます。奇妙なことは、コードを次のように変更した場合です。

if(driver.findElement(By.id(elementId)).isDisplayed()){ 
    CenterOnClick.testFail(elementId , driver);  
    FailScreenShot.test(caseId, driver, targetNumberCell); 

}else{ 
    driver.findElement(By.id(downloadId)).click(); 
    TimeUnit.SECONDS.sleep(7); 


} 

エラーメッセージが表示されている場合のみ動作します。ボタンがあれば、まだそこに座るだけです。私がこれ以上16時間以上働いていたので、どんな助けでも大いに感謝します。おかげさまで

編集:私の問題は私のコードよりもウェブサイトと関連があると思っています。

答えて

0

WebElementドキュメントをお読みください:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#findElement-org.openqa.selenium.By-

  • findElement *は非存在要素、 利用{@link #findElements(BY)}を探すために使用され、代わりに、長さゼロの応答 を主張すべきではありません。 (findElements

    if(!driver.findElements(By.id(elementId)).isEmpty()){ 
    //do smth 
    } 
    
    :あなたはisDisplayed()方法で "偽" を取得しませんが、NoSuchElementException

    find()からそう、あなたのような何かを行う必要があります - 素子の場合

は存在しません

+0

'IF(driver.findElements(By.id(ELEMENTID))のisEmpty()){//も使用.size()> 0 driver.findElement(By.id(downloadId))。クリック(); TimeUnit.SECONDS.sleep(7); '2番目のステップで試行されました。まだ何もしません。これでボタンはクリックされましたが、エラーメッセージが表示された場合は何もしません。 – Gingja

0
int x = driver.findElement(By.id(elementId)).getLocation().getX(); 

if(x==0) 
{ 
    driver.findElement(By.id(downloadId)).click(); 
    TimeUnit.SECONDS.sleep(7); 
} 
else{ 
    CenterOnClick.testFail(elementId , driver);  
    FailScreenShot.test(caseId, driver, targetNumberCell); 
} 
+0

残念ながら何も起こりません。 – Gingja

+0

このエラーが発生しているページを表示してください。 –

+0

解決されました。ありがとう – Gingja

0

暗黙の待ちを40秒に設定していたので、.isEmpty()がその仕事をしてから40秒待ってからelseに行きましたtatement。すべての助けに感謝します。

if(driver.findElements(By.id(elementId)).isEmpty()){ //also used .size() > 0 
    driver.findElement(By.id(downloadId)).click(); 
    TimeUnit.SECONDS.sleep(7); 

}else{ 
    CenterOnClick.testFail(elementId , driver);  
    FailScreenShot.test(caseId, driver, targetNumberCell); 

} 
関連する問題