2017-02-27 7 views
0

次のコードを実行するとNoSuchElementExceptionが表示されます。IFステートメントの `driver.findElement(...)`をチェックすると、 `NoSuchElementException`がスローされます

常に
if (driver.findElement(By.xpath("//*[@id='gr2']")).isDisplayed()) { 
    Thread.sleep(5000); 
    driver.findElement(By.xpath("//*[@id='balInqTableStep2']/td/table/tbody/tr/td/table/tbody/tr[3]/td[4]/input[2]")).click(); 
} 
else { 
    test.log(LogStatus.FAIL,"Please configure Gift Slabs for this site. Contact business."); 
    test.log(LogStatus.FAIL,"Second time wallet credit is not done"); 
} 
+0

あなただけの私たちは、この情報を知りたいか、お聞きしたい質問もあるかのようにそれを呼び出すことができますか? – Andersson

+0

例外はどこにありますか? – Guy

+0

'absolute xpath'を実行する代わりに、' relative xpath'を作成してから同じ条件を再度確認してください。 –

答えて

0

あなたがdriver.findElement(By.xpath("//*[@id='gr2']"))を呼び出し、要素がDOMに存在しない、それはつもりNoSuchElementExceptionをスローしています。

findElementではなく、findElementsというメソッドを呼び出して、コードが例外をスローしないようにする方法があります。

List<WebElement> elements = driver.findElements(By.xpath("//*[@id='gr2']")); 
if(!elements.isEmpty() && elements.get(0).isDisplayed()) { 
    Thread.sleep(5000); 
    driver.findElement(By.xpath("//*[@id='balInqTableStep2']/td/table/tbody/tr/td/table/tbody/tr[3]/td[4]/input[2]")).click(); 
} 
else { 
    test.log(LogStatus.FAIL,"Please configure Gift Slabs for this site. Contact business."); 
    test.log(LogStatus.FAIL,"Second time wallet credit is not done"); 
} 

は、例えば:それはあなたのために働く願っています。

+0

ありがとう@トムの働き –

1

NoSuchElementException例外は、ページに要素が存在しないことを意味します。

isDisplayedメソッドは、要素が既にページに存在すると仮定し、要素が存在しない場合は例外をスローします。

あなたはwebdriverメソッドを呼び出す前にその要素が存在することを確認することができますし、独自のメソッドを記述してこれを処理することもできます。

次のコードスニペットは、あなたの

public boolean isDisplayed(By identifier){ 
    boolean isElementDisplayed = false; 
    try{ 
     WebElement element = driver.findElement(identifier); 
     isElementDisplayed = element.isDisplayed() 
    }catch (NoSuchElementException){ 
     return false; 
    } 

    return isElementDisplayed; 
} 

を助けるかもしれないし、あなたがこの

isDisplayed(By.xpath("//*[@id='gr2']") 
+0

ありがとう@トムの働き –

+0

@SagarShethあなたはトムと言ったので、どの解決策が働いていますか?いずれにしてもこれを行うべきです。 http://stackoverflow.com/help/someone-answers –

関連する問題