序言
我想使用页面对象模型为e2e测试准备易于维护和调试的代码。
我做什么
当我开始准备Protractor的2期末测试时,我尝试通过执行以下步骤来准备Page Object Model中的代码:
让我提供第4点提到的此类代码的简化示例:
class genericPageWithTable {
get Frame1() {
return element(by.id('someId'));
}
get Table1() {
return this.Frame1.element(by.tagName('table'));
}
}
class specificTable extends genericPageWithTable {
get specificElement {
return this.Table1.element(by.className('specificElement'));
}
}
我用以下示例断言编写了简单的测试:
expect(specificElement.getText()).toBe('someString');
这就是我沮丧的开始...
测试失败,因为undefined
没有getText()...
问题
我不知道哪个元素未定义,哪个方法没有返回元素。我不知道我是否可以相信任何一种方法。
所以我正在运行protractor --elementExplorer
,并尝试验证我是否正确编写了每个定位器...
在elementExplorer中它可以工作,所以我开始添加browser.wait(EC.visibilityOf(...))
条件...但是现在错误消息为我提供了未定义的信息,其中不包含'isPresent'方法。
因此,我开始添加async
和await
,但是在许多情况下,仍然很难找到未定义的返回值...
在很多情况下,添加断点并尝试调试也使我感到困惑,因为在某种程度上,流程是意外的。
问题
你能告诉我吗?
答案 0 :(得分:1)