亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

除了用于記錄目的之外,是否還有必要處理硒中的異常?

除了用于記錄目的之外,是否還有必要處理硒中的異常?

慕仙森 2022-10-12 09:57:48
我發現很難理解硒中異常處理的意義。例如,如果我嘗試單擊某個元素,但找不到該元素,NoSuchElementException則會發生這種情況。我可以捕獲異常,拋出新的RunTimeException,或者什么都不做。結果將是相同的(程序將失敗并停止)。我為什么要費心處理這樣的異常?我在這里錯過了什么嗎?謝謝    public void clickOnElement(MobileElement element, Integer waitInSeconds){    waitInSeconds = (waitInSeconds != null ? waitInSeconds : this.secondsToWait);    try {        waitFor(ExpectedConditions.elementToBeClickable(element),waitInSeconds);        element.click();    } catch (Exception e) {        System.out.println("Could not click on element");        e.printStackTrace();    }}
查看完整描述

3 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

Selenium 的異常處理是證明您的測試不受意外情況影響的好方法。例如,如果元素不再附加到頁面,您可以嘗試再次查找該元素,例如在執行更改元素中的某些內容的 javascript 之后。


try{

    driver.findElement(By.id("MyId")).click();

} catch (StaleElementReferenceException e){

    driver.findElement(By.id("MyId")).click();

}

或者,例如,如果某個元素沒有出現,您可以忽略,例如登錄后頁面頂部的 GDPR 覆蓋。


try {

    wait.until(ExpectedConditions.presenceOfElementLocated(By.id("gdpr_overlay")));

} catch (TimeoutException ignored){


}

如果覆蓋沒有出現,這將忽略等待引發的異常并繼續運行您的測試。


查看完整回答
反對 回復 2022-10-12
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

異常是非常有用的功能,遠比日志記錄有用,你應該查一下。你可以在 catch 塊中做任何你想做的事情,如果第一個元素失敗,你可以嘗試單擊不同的元素,重定向到另一個頁面......可能性真的是無窮無盡的。忠告:避免泛型異常,你應該捕獲特定的異常并做出相應的反應,在最后一個catch塊中你可以做泛型異常e并拋出錯誤。



查看完整回答
反對 回復 2022-10-12
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

首先 ExceptionHandling 不是 Selenium 的概念,但它與 JAVA 有關?,F在談到處理異常的用法,它對您在構建框架時將理解的概念有很多深入的了解,但到目前為止,通過處理異常來理解您可以繼續執行您的代碼而不用 JVM 終止其余部分時它是很重要的遇到異常。


try{

}

catch{

}

finally

{

}

當你總是想執行一段代碼時,不管你的場景是通過還是失敗,finally 也非常有用,例如 driver.close()。希望對您有所幫助......快樂的編碼:)


查看完整回答
反對 回復 2022-10-12
  • 3 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號