2014-02-06 77 views
0

目前正在硒的webdriver和使用的Java ..在試運行的Firefox 26.0。在Eclipse中使用TestNG的框架工作..怎麼能跳過同一類 - 硒網絡驅動器測試

  • 如果我正在運行測試名稱Test.java。因爲我有許多過濾器部分組合與下拉值以及圖像中顯示的日期選擇器和多選框。

enter image description here

在所述濾波器部我已經編寫的代碼如下基於:

Log.info("Clicking on Visualization dropdown"); 

JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("document.getElementById('visualizationId').style.display='block';"); 
Select select = new Select(driver.findElement(By.id("visualizationId"))); 
select.selectByVisibleText("Week"); 
Thread.sleep(6000); 

Log.info("Clicking on Period dropdown"); 
JavascriptExecutor executor1 = (JavascriptExecutor)driver; 
executor1.executeScript("document.getElementById('periodId').style.display='block';"); 
Select select1 = new Select(driver.findElement(By.id("periodId"))); 
select1.selectByVisibleText("Last 4 Weeks"); 
Thread.sleep(6000); 

Log.info("Clicking on Apply Filter button"); 
driver.findElement(By.id("kpiFilterSubmit")).click();// This is the one combination of filter section 

//Filter selection-2 

Log.info("Clicking on Visualization dropdown"); 
JavascriptExecutor executor3 = (JavascriptExecutor)driver; 
executor3.executeScript("document.getElementById('visualizationId').style.display='block';"); 
Select select3 = new Select(driver.findElement(By.id("visualizationId"))); 
select3.selectByVisibleText("ICC"); 
Thread.sleep(6000); 

Log.info("Clicking on Type dropdown"); 
JavascriptExecutor executor02 = (JavascriptExecutor)driver; 
executor02.executeScript("document.getElementById('classificationId').style.display='block';"); 
Select select02 = new Select(driver.findElement(By.id("classificationId"))); 
select02.selectByVisibleText("Internal PRs"); 
Thread.sleep(6000); 

Log.info("Clicking on Priority dropdown"); 
JavascriptExecutor executor5 = (JavascriptExecutor)driver; 
    executor5.executeScript("document.getElementById('priorityId').style.display='block';"); 
Select select5 = new Select(driver.findElement(By.id("priorityId"))); 
select5.deselectAll(); 
select5.selectByVisibleText("Not Urgent"); 
Thread.sleep(6000); 

Log.info("Clicking on Apply Filter button"); 
driver.findElement(By.id("kpiFilterSubmit")).click(); 
Thread.sleep(6000);// Second combination of filter section. 

例如,如果一段時間我不能能夠識別元件或一些其它問題通常意味着代碼將停止並顯示錯誤。但在我的情況下,我想跳過特定的過濾器部分,我需要移動到過濾器部分的其他組合。請幫我做更好的標準代碼..我學習Java和硒的網絡驅動器。在我的情況下

+0

Jugaad將爲每個部分使用try catch。理想情況下,您應該處理每個可能會引發錯誤的情況,即使用適當的等待,檢查元素是否存在,然後僅對其執行任何操作等。另一方面,您可以使用像testNg這樣的框架來處理每個測試用例。 – Husam

+0

可能有更好的方法:按下「應用過濾器」後,頁面可能會根據下拉菜單中的值向服務器發送URL請求。因此,不必選擇所有這些值並單擊「應用過濾器」,也可以簡單地構建URL字符串並使用Web驅動程序導航到它。如果您提供您嘗試自動執行的網頁的網址,那麼我可能會幫助您解決問題。 –

+0

我也有同樣的問題,但仍然在等待更好的解決方案...如果你找到答案請讓我知道 –

回答

0

我想跳過那個特定的濾波部分,我需要 移動到其他組合過濾器部分 Blockquote

您可以使用'驗證'輔助方法。

百科:http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#assertion-or-verification

例如,

JavascriptExecutor executor = (JavascriptExecutor)driver; 
if(verifyElementPresent(By.id("visualizationId")){ 
    executor.executeScript("document.getElementById('visualizationId').style.display='block';") 
    Select select = new Select(driver.findElement(By.id("visualizationId"))); 
    select.selectByVisibleText("Week"); 
    Thread.sleep(6000); 
} 
... 
     public boolean verifyElementPresent(By by) { 
      try { 
       driver.findElement(by); 
       return true; 
      } catch (NoSuchElementException e) { 
       return false; 
      } 
      } 

順便說一句, 這是不使用Thread.sleep(6000);

你可能會面臨不同的問題一個很好的決定。

所以嘗試使用等待。 維基百科:http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp

0

你的目標不明確 - 只應該使用一個成功的組合還是要運行所有成功組合的測試?我可能會建議使用數據提供程序。它爲您的測試提供輸入數據。在你的情況下,它可能是要使用的過濾器列表。該列表將在依賴@Test或@BeforeTest中進行管理。所有失敗的組合將被標記爲失敗並像平常一樣跳過測試。