我需要我网站上的一个元素的文本(myProfile),但代码无法运行并且在jasmine上运行代码会给我以下错误
这是我的代码
describe("login to CA", function() {
it("returns successful", function() {
driver.get(url);
driver.findElement(By.xpath('//*[@id="input-username"]')).sendKeys(username);
driver.findElement(By.xpath('//*[@id="input-password"]')).sendKeys(pw);
driver.findElement(By.xpath('//*[@id="submit"]')).click();
myProfile = driver.findElement(By.css('#bs-example-navbar-collapse-1 > ul > li:nth-child(5) > a'));
expect(myProfile.getText()).toEqual('My profile');
});
});
该怎么办?
答案 0 :(得分:4)
getText
是一个承诺对象,因此请尝试使用eventually
expect(myProfile.getText()).to.eventually.be('My profile')
代码可能会根据库(chai或jasmine)而改变
请参阅:
<强>茉莉强>
https://github.com/dgrekov/jasmine_eventually
<强>柴强>
答案 1 :(得分:3)
问题是,getText()
会返回承诺。
如果您使用Protractor
,您将能够以这种方式断言(Protractor使用修补后的jasmine版本,expect()
能够在进行断言之前隐式解析promise。)
或者,如果不使用Protractor,您应该明确解决承诺:
myProfile.getText().then(function (actualText) {
expect(actualText).toEqual('My profile');
});