2016-07-19 17 views
0
public void verifyErrorMsgforInvalidUserTransPosting(
{ 
String errorMSG="You dont have permission to create transaction using this ID"; 
String errorMSGSYS=driver.findElement(By.xpath("html/div/.....").getText(); 

if(errorMSGSYS.equals(errorMSG)) 
    { 
     System.out.println("System didnt allowed user to post the Transaction"); 
     report.updateTestLog("Verify System is NOT allowing user to post transaction for an invalid user", "System didnt allowed user to post the Transaction", Status.SCREENSHOT); 
    } 
    else 
    { 
     System.out.println("System is allowing user to post the Transaction which is NOT expected behavior"); 
     report.updateTestLog("Verify System is NOT allowing user to post transaction for an invalid user", "System is allowing user to post the Transaction which is NOT expected behavior", Status.FAIL); 
    } 
} 

上記のコードでは、場合(条件1)要素が発見されたときに動作します不一致取り扱いトライキャッチは

がある場合に条件1を満たす else文が動作するかどうか

try catchまたは他の方法を使って要素が見つからないときに、どうすればelseを処理することができますか?

答えて

0

これはあなたが探しているラインに沿っているのでしょうか?

public void verifyErrorMsgforInvalidUserTransPosting(
{ 
    String errorMSG="You dont have permission to create transaction using this ID"; 
    Boolean isPresent = driver.findElements(By.xpath("html/div/.....").size() > 0; 

    if(!isPresent) 
    { 
     System.out.println("Failed to find element"); 
     return; 
    } 

    String errorMSGSYS = driver.findElement(By.xpath("html/div/.....").getText();  
    if(errorMSGSYS.equals(errorMSG)) 
    { 
     System.out.println("System didnt allowed user to post the Transaction"); 
     report.updateTestLog("Verify System is NOT allowing user to post transaction for an invalid user", "System didnt allowed user to post the Transaction", Status.SCREENSHOT); 
    } 
    else 
    { 
     System.out.println("System is allowing user to post the Transaction which is NOT expected behavior"); 
     report.updateTestLog("Verify System is NOT allowing user to post transaction for an invalid user", "System is allowing user to post the Transaction which is NOT expected behavior", Status.FAIL); 
    } 
} 
+0

ありがとうございました....これは私のために働いた...幸せ:) :) – Meghasri

0

私は少し違うことをします。あなたはいくつかの弦がいくつかの場所に繰り返されているので、それらをすべて上に置きます。コードを読みやすくすると思います。私はまた、テキスト値をチェックする前に、目的の要素が存在することを保証するというケースを扱いました。

public void verifyErrorMsgforInvalidUserTransPosting() 
{ 
    String testDescription = "Verify System is NOT allowing user to post transaction for an invalid user"; 
    String expectedCondition = "System didnt allowed user to post the Transaction"; 
    String unexpectedCondition = "System is allowing user to post the Transaction which is NOT expected behavior"; 
    String errorMSG = "You dont have permission to create transaction using this ID"; 
    List<WebElement> error = driver.findElements(By.xpath("html/div/.....")); 

    if (error.isEmpty()) 
    { 
     System.out.println("Failed to find element"); 
     return; 
    } 

    String errorMSGSYS = error.get(0).getText(); 
    if (errorMSGSYS.equals(errorMSG)) 
    { 
     System.out.println(expectedCondition); 
     report.updateTestLog(testDescription, expectedCondition, Status.SCREENSHOT); 
    } 
    else 
    { 
     System.out.println(unexpectedCondition); 
     report.updateTestLog(testDescription, unexpectedCondition, Status.FAIL); 
    } 
} 

注:サンプルのXPathがHTMLタグで始まっています。私はあなたが実際にそれを行うコードを持っていないことを期待しています...それはXPathを非常に壊れやすいので、本当に、本当に悪い考えです。 HTML構造が変更されると、そのロケータが破損します。すべての相対パスを使用せずに、目的の要素に非常に近い要素を見つける方法を探すことをお勧めします。

+0

ありがとうJeff。上記のコードも試してみました。これも私のために働いています。 私の実際のコードはhtml..で始まっていません。これは私が言及した参考用です。アドバイスありがとうございます。それは私のために将来的に役立ちます:) – Meghasri

0

driver.findElements()は、現在表示されていない要素(複数のページがある場合)も返すことがあります。したがって、これは問題となる可能性があります。

は、私は、次のをお勧めします:予想通り

try 
    { 
     String errorMSGSYS=driver.findElement(By.xpath("html/div/.....").getText(); 
    } 
    catch(Exception e) 
    { 
     //code to handle "element not found" 
    } 

    //normal flow as earlier 

をこの場合には、要素が見つかった場合、あなたの通常の流れが動作します。要素が見つからない場合、findElementはcatchブロックにキャッチされた例外をスローします。必要に応じてフローを処理できます。

これが役に立ちます。