Вы также можете использовать метод compareTo()
для сравнения двух строк. Если результат compareTo равен 0, то две строки равны, в противном случае сравниваемые строки не равны.
==
сравнивает ссылки и не сравнивает фактические строки. Если вы создали каждую строку, используя new String(somestring).intern()
, вы можете использовать оператор ==
для сравнения двух строк, в противном случае могут использоваться только методы equals () или compareTo.
Если вы используете async / await (которым вы являетесь!), Вам нужно будет дождаться всех обещаний. Поэтому я предполагаю, что ваше beforeEach
обещание загрузить страницу не выполнено, и вы ищете веб-элемент, который, возможно, не был должным образом загружен Protractor.
beforeEach(async () => {
myPage = new MyPage();
await browser.get('my-page'); // browser.get returns a webdriver.promise.Promise
});
it('should work', async () => {
console.log('should work');
expect(true).toBeTruthy();
});
it('should display the title', async () => {
const title = await $('my-title-selector').getText(); // <-- this is right, getText returns a webdriver.promise.Promise<string>
expect(title).toEqual('My-Title');
});
Если вы используете Protractor 5.4, он по-прежнему использует библиотеку управления потоком / обещанием selenium-webdriver, а не собственные обещания. Таким образом, webdriver.promise.Promise - это набор команд селен-веб-драйвера, пространство имен обещания, объект обещания. В Protractor 6 (когда он не в бета-версии), он переключится на нативные обещания.
Надеюсь, что это помогает.
Ваш первый тест будет проходить всегда, потому что он не взаимодействует с приложением и, следовательно, не проверяет тестируемость углового участка. Ваш второй тест, однако, пытается взаимодействовать с приложением, но, по-видимому, истекает время ожидания, поскольку страница не стала тестируемой на этом этапе. По этой же причине ваши тесты проходят, когда waitForAngularEnabled (false), поскольку они больше не проверяют тестируемость.
Может возникнуть проблема с установкой страницы, если ваш угловой код использует $ интервал или $ тайм-ауты определенным образом. Ознакомьтесь с обновлениями основного вопроса по ссылке ниже и посмотрите, могут ли они применяться к вашему проекту.