getText()不起作用

时间:2016-10-03 15:38:15

标签: javascript selenium jasmine

我需要我网站上的一个元素的文本(myProfile),但代码无法运行并且在jasmine上运行代码会给我以下错误

enter image description here

这是我的代码

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');
  });
});

该怎么办?

2 个答案:

答案 0 :(得分:4)

getText是一个承诺对象,因此请尝试使用eventually

expect(myProfile.getText()).to.eventually.be('My profile')

代码可能会根据库(chai或jasmine)而改变

请参阅:

<强>茉莉

https://github.com/dgrekov/jasmine_eventually

<强>柴

http://chaijs.com/plugins/chai-as-promised/

答案 1 :(得分:3)

问题是,getText()会返回承诺

如果您使用Protractor,您将能够以这种方式断言(Protractor使用修补后的jasmine版本,expect()能够在进行断言之前隐式解析promise。)

或者,如果不使用Protractor,您应该明确解决承诺:

myProfile.getText().then(function (actualText) {
    expect(actualText).toEqual('My profile');
});