gpt4 book ai didi

java - WebDriverEventListener 中的 onException 何时触发?

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:21 26 4
gpt4 key购买 nike

我在 Selenium 测试中使用自定义 WebDriverEventListener 来进行日志记录和屏幕截图。效果很好:

例如,当在浏览器窗口中找不到某个元素时,网络驱动程序会抛出异常,并正确触发 onException() 方法

@Override
public void onException(Throwable throwable, WebDriver driver) {
// do stuff
}

当我自己抛出异常时,如下所示:抛出 new WebDriverException("my message"); 事件不会触发。

有人可以解释一下这种行为吗?

最佳答案

如果您想在测试失败或出现异常时执行某些操作,您可以向测试添加一条规则(在 @Before setUp() 所在的类中添加):

@Rule
public TestRule testWatcher = new TestWatcher() {

@Override
public void succeeded(Description test){
for (LogEntry log : driver.manage().logs().get(LogType.DRIVER).getAll()) {
System.out.println("Level:" + log.getLevel().getName());
System.out.println("Message:" + log.getMessage());
System.out.println("Time:" + log.getTimestamp());
System.out.println("-----------------------------------------------");
}
System.out.println();

@Override
public void failed(Throwable t, Description test) {

String testName = test.getClassName();
String subTestName = test.getMethodName();
String screenShotName = String.format("%s\\%s", testName, screenShotName);
if (driver instanceof TakesScreenshot) {
File tempFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
try {
System.out.println(">>>>>>>>>>LOGS: " + yourDirForImages + "\\" + screenShotName + ".png");
FileUtils.copyFile(tempFile, new File(String.format("%s.png", screenShotName)));
} catch (IOException e) {
e.printStackTrace();
}
}

}

监听器可用于在触发某些操作时执行某些代码,如果有页眉、 Logo 或页脚,则在单击之前执行一些代码。

public class ListenerMethodsImplementation extends AbstractWebDriverEventListener {

public void beforeClickOn(WebElement element, WebDriver myTestDriver) {
assertTrue("No Logo!", myTestDriver.findElements(By.id("logo")) == 1);
}

如何使用:

    @Before
public void setUp() {
EventFiringWebDriver myTestDriver = new EventFiringWebDriver(driver);
ListenerMethodsImplementation myListener = new ListenerMethodsImplementation();
myTestDriver.register(myListener);
driver = myTestDriver;
}

如何从监听器获取驱动程序:((EventFiringWebDriver) driver).getWrappedDriver()

PS,这只是我的代码的一小部分,但我认为这会对您有所帮助。

关于java - WebDriverEventListener 中的 onException 何时触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20995722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com