我已创建此步骤定义以检查网页中是否存在给定文本。代码工作正常但有时候,特别是当我查找长文本时,即使文本存在于页面中,我也会收到错误。
代码是这样的:
this.Then(/^The text "([^"]*)" exists in page$/, function(myText, callback){
browser.sleep(10000);
var selectedElement = element(by.xpath("//*[. = '" + myText + "']"));
expect(selectedElement.isPresent()).to.eventually.equal(true, "This text is not present in page").and.notify(callback);
});
基本上我做了三件事:
你能告诉我是否有更好的方法吗?在步骤定义的开头使用browser.sleep()来等待DOM加载是正确的吗?
重要提示:我没有使用Angularjs
提前谢谢。
答案 0 :(得分:2)
最有可能的问题是,您使用的是严格的文本匹配,但所需文本周围可能会有额外的空格或换行符。如果适用,您可以尝试使用contains()
:
element(by.xpath("//*[contains(., '" + myText + "')]"));
element(by.xpath("//*[text()[normalize-space() = '" + myText + "']]"));
作为旁注,使用browser.sleep()
等待页面加载不太可靠,应该避免。还有一种更好的方式 - browser.wait()
和Expected Conditions。