【发布时间】:2018-11-11 12:41:42
【问题描述】:
我正在研究页面对象模型中的 PageFactory 和自动化的 TestNG 框架。我在WebDriverEventListener 中使用beforeFindBy 方法来监听元素的存在。当一个元素不存在时,NoSuchElementException 被抛出,我使用try-catch 块捕获异常。如何停止执行 @Test 方法中的剩余步骤。我不想在我的@Test 方法中使用try-catch。任何关于我的设计更改的建议都非常感谢。下面是我的设计。
登录页面
public class LoginPage {
@FindBy(xpath = "//img[@src='/webres_5786257bd7c8a5.72130757/themes/default/images/login/logo.png']")
WebElement loginLogo;
public LoginPage(WebDriver driver, ExtentTest test) {
this.driver = driver;
PageFactory.initElements(driver, this);
this.test = test;
}
public void verifyLoginPageLogo() throws IOException {
Assert.assertTrue(loginLogo.isDisplayed());
test.log(LogStatus.PASS, "Logo is displayed", takeScreenshot(driver, test));
}
}
听众
public class CustomListeners extends TestListenerAdapter implements WebDriverEventListener {
//All Implemented Methods
public void beforeFindBy(By by, WebElement element, WebDriver driver) {
try {
driver.findElement(by);
} catch (NoSuchElementException e) {
System.out.println("Element " + by + "not found");
}
}
}
测试类
@Listeners(CustomListeners.class)
public class Test1 extends BaseTestSuite {
LoginPage lp;
TabMenu tm;
@Test(priority = 0, testName = "Verify Login")
public void login() throws Exception {
lp = new LoginPage(driver, test);
tm = new TabMenu(driver, test);
driver.get(Constants.url);
lp.verifyLoginPageLogo(); //Element not present here
lp.setUserName("dmin");
lp.setPassword("admin");
lp.clickLoginBtn();
tm.verifyTabMenu();
tm.isCurrentTab("Dashboard");
}
}
【问题讨论】:
标签: selenium testng webdrivereventlistener