Wenn Sie nicht brauchen, um zu prüfen, ob der Alarm tatsächlich erscheint, würde ich empfehlen, das Verhalten der JavaScript alert()
Methode Ändern einer Nachricht zu protokollieren statt:
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) webDriver;
javascriptExecutor.executeScript("window.alert = function(message){ console.log(message); };" +
"window.confirm = function(message){ console.log(message); return true; };");
Dann können Sie HtmlUnitDriver.switchTo().alert().accept()
in Ihrem Code überspringen .
Hinweis: Diese Methode funktioniert nicht, wenn die Warnung beim ersten Laden der Seite angezeigt wird, da Selenium darauf wartet, dass die Seite geladen wird, bevor mit der Interaktion begonnen wird. Das obige JavaScript wird also zu spät ausgeführt.
Ab HtmlUnitDriver
Version 2.25
, HtmlUnitDriver.switchTo().alert().accept()
nicht länger ein UnsupportedOperationException()
. Jedoch, accept()
appears to do nothing except confirm that the alert is present. Da die Warnung nicht verworfen werden kann, ist das Deaktivieren von Warnungen mithilfe der oben genannten Methode wahrscheinlich die beste/einzige Lösung. Wenn Sie Warnungen mit HtmlUnitDriver
testen müssen, benötigen Sie möglicherweise zwei separate Tests - einen, um zu überprüfen, ob die Warnung angezeigt wird, und einen anderen, um zu überprüfen, ob sich der Browser bei deaktivierter Warnung korrekt verhält.
Wenn Sie dringend Alarmgabe benötigen und Sie sind in Ordnung mit Sourcen, alert handling has been implemented in the master
branch of HtmlUnitDriver
. Ich bin mir nicht sicher, wann es in einer Veröffentlichung enthalten sein wird.