如果我期望(img).not.toBe(null),那么我得到一个错误:
错误:期望使用WebElement段进行调用,预期一个Promise。你的意思是使用.getText()?我不想让文本在img中,我只想知道标签是否存在于页面上。
错误:期望使用WebElement段进行调用,预期一个Promise。你的意思是使用.getText()?我不想让文本在img中,我只想知道标签是否存在于页面上。
describe('company homepage',function() { it('should have a captcha',function() { var driver = browser.driver; driver.get('http://dev.company.com/'); var img =driver.findElement(by.id('recaptcha_image')); expect(img.getText()).not.toBe(null); }); });
通过,但我不知道它是测试正确的事情。将id更改为不存在的值会失败。
如何在非角度的应用程序上下文中使用量角器进行正确的测试?
解决方法
编辑2:
每个编码下面的Smackdown,一个更短的答案现在可以在量角器:
期望砥(真)(元件(by.id( ‘recaptcha_image’))isPresent()。)。
编辑1:
我今天发现了isElementPresent(),这只是我下面描述的一个更可读的快捷方式。见:http://www.protractortest.org/#/api
你的用法是:
driver.isElementPresent(by.id('recaptcha_image')).then(function(present){ expect(present).toBe(false); })
老回答(这个工作,但上面是更加读者友好)
一般来说,如果你不确定一个标签将在那里,你应该使用findElements(或者$$这是findElements的别名)。然后测试数组长度。 FindElement(和$)将抛出一个错误,如果它找不到该元素。
因此而不是
var img =driver.findElement(by.id('recaptcha_image')); expect(img.getText()).not.toBe(null);
使用:
driver.findElements(by.id('recaptcha_image')).then(function(array){ expect(array.length).not.toBe(0); })
另外,getText()返回一个承诺,这就是为什么你得到这个错误。