自動化測試常見的錯誤與解決方式

自動化測試常見的錯誤與解決方式

這篇文章主要將自動化測試常見的錯誤原因與解決方式做整理。

網站的自動化測試常會因為網頁當下的動態狀態而有不同的結果,也因此常導致自動化測試失敗,

要提高自動化測試的可靠度就必須將這些可能會錯誤的原因排除,

為了避免見招拆招,這篇文章將可能會網頁元件找不到錯誤的原因列舉

供讀者在進行自動化測試時參考。

 

找不到網頁元件

錯誤:NoSuchElementException、ElementNotVisibleException

原因:這是一個最常見的錯誤。有可能因為網頁原件出現的時間點比較慢,網頁元件 Xpath有更動導致。也有可能是因為網頁內有iFrame的關係。

解決方式:如果是因為網頁中有iFrame,必須要將控制權移動到iFrame才可以對iFrame內部的網頁元件操作。

driver.switchTo().frame(1);

driver.switchTo().frame(driver.findElement(By.id(“id”)));

driver.switchTo().defaultContent();

 

如果是因為時間點的關係,導致網頁元件比較晚出現,可以針對該原件等待。

wait = new WebDriverWait(driver, 5);

wait.until(ExpectedConditions.presenceOfElementLocated)(Xpath_of_the_WebElement));

或是

wait.until(ExpectedConditions.visibilityOfElementLocated)(Xpath_of_the_WebElement));

 

URL 錯誤

錯誤: “org.openqa.selenium.WebDriverException: unknown error: unhandled inspector error: {“code”:-32603,”message”:”Cannot navigate to invalid URL“}”

原因:有可能是因為網址或是指定的 protocol有問題

解決方式:試著將  driver.get(“www.google.com“);  改成 driver.get(“https://google.com”);

 

網頁元件點擊不到

錯誤:WebDriverException: unknown error: Element is not clickable at point

原因:先確定該網頁元件的 Xpath是否正確。另一個可能的原因是瀏覽器呈現畫面的關係。

多半情況下我們點擊都使用  driver.findElement(byXpath).click()

試著改用 Actions的點擊方式

Actions actions = new Actions(driver);

actions.click(driver.findElement(by)).build().perform();

 

找不到視窗

錯誤:NoSuchWindowException

原因:在網頁新開啟一個新的視窗之後,可能因為時間點的關係,自動化測試程式找不到新開啟的視窗

解決方式:必須將目前所有視窗的 Window Handles取得,接著再將視窗控制移到該視窗 handle

windowHandles = driver.getWindowHandles();

driver.switchTo().window(handle);

 

Alert並不存在

錯誤:NoAlertPresentException

原因: 因為自動化測試程式雖然有預期 Alert的出現,也做了適當的處理。但是,Alert出現的時間點可能比較慢的關係,導致找不到 Alert

解決方式:針對 alert等待。

WebDriverWait wait = new WebDriverWait(driver.getDriver(), 15);

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *