我想根据当前页面上是否存在某些文本来设置变量。
然后运行依赖于该变量的protractor
测试。我不能$(':contains')
,因为在此上下文中有$ != jQuery
,我无法通过返回承诺的getText()
看到一种简单的方法。有expect.toContain
之类的匹配器吗?以及在匹配器运行后运行一些代码的方法?或者我可以使用其他策略。
答案 0 :(得分:0)
如果我认为我理解正确,你可以使用以下几行:
这将提供页面中的所有文字:
window.document.getElementsByTagName("html")[0].innerText
然后您可以使用正则表达式来检查您的文字:
var res = patt.test(str);
这就是你得到的:
对于这个例子,我正在搜索文本“status”:“ok”
var str = window.document.getElementsByTagName("html")[0].innerText;
var patt = /"status": "ok"/;
var res = patt.test(str);
if(res){console.log(text is present!)}
答案 1 :(得分:0)
你想要的东西有点像这样:
// utility to test expection of an element to match a regex:
var expectByCssToMatch = function(css, pattern) {
browser.driver.findElement(
by.css(css)).getText().then(function(text) {
expect(text).toMatch(pattern);
});
};
用法:
describe('Logging in, function() {
it('should work', function() {
var namePattern = new RegExp(param.name, i');
expectByCssToMatch('.messages', /log\s?in successful/i);
expectByCssToMatch('body', namePattern);
});
});
实现您的要求,并希望将expect()
来电替换为您自己选择的回调