- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 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/
我正在使用 Selenium Webdriver、Listener 和实现 WebDriverEventListener 的 MyEventListener。此 MyEventListener 在 E
如何在C#中实现WebDriverEventListener? 我在 java 导入中没有问题: import org.openqa.selenium.support.events.AbstractW
我在 Selenium 测试中使用自定义 WebDriverEventListener 来进行日志记录和屏幕截图。效果很好: 例如,当在浏览器窗口中找不到某个元素时,网络驱动程序会抛出异常,并正确触发
我为我的selenium脚本编写了一个独立的函数,这样当我想与一个对象交互时,我首先检查它是否存在,为此我已经指定了一些东西,例如识别它的方法和数据使用等,并有一些像这样的方法:- public We
我是一名优秀的程序员,十分优秀!