Причина ваших проблем в том, что этот сайт, на который вы ссылаетесь, является неугловым сайтом.По умолчанию Protractor будет ожидать установления атрибута угловой тестируемости страницы, прежде чем предпринимать какие-либо действия, но, очевидно, на неугловом сайте этот атрибут не будет существовать.
Если вы добавите browser.waitForAngularEnabled (false) вначало вашего ИТ-блока Protractor не будет проверять это свойство тестируемости и продолжит работу.
Возможно, вы слышали, что Protractor использует webdriverJS для взаимодействия с браузером, который является мощным инструментом.WebdriverJS может взаимодействовать с любой страницей браузера, угловой или не угловой.Транспортир оборачивает webdriverJS, чтобы упростить тестирование угловых страниц (в основном за счет ожидания загрузки угловых элементов с использованием упомянутого выше элемента тестируемости).
Причина. Browser.driver.get () работает потому, что вызывает браузер.driver ... вы взаимодействуете непосредственно с webdriverJS, а не с функциями транспортировщиков.WebdriverJS может взаимодействовать с неугловыми сайтами напрямую, без проблем, но тогда вы не сможете использовать некоторые из полезных API-интерфейсов транспортировщиков .
Кроме того, следует рассмотреть возможность отключения потока управления и переключенияк асинхронному / ожидающему синтаксису. Больше информации об асинхронности / ожидании
describe('Qlik Dashboard Test', function() {
it('Primary Filter Testing',function(){
browser.waitForAngularEnabled(false)
var url = 'https://sense-demo.qlik.com/sso/sense/app/dcb7c95a-9ecd-43e2-8786-cae00108a324/sheet/54b60312-68c5-4d92-a225-79326b68ad5a/state/analysis';
var EC = protractor.ExpectedConditions;
// Reference to all filters
var filter = element.all(by.className('title ng-binding'));
// Reference to first option in each filter
var first_opt = element(by.repeater('textItem in item.textItems'));
// Reference to backbutton
var bb = element.all(by.className('lui-clear-all lui-icon lui-icon--remove'));
// Go to website
browser.get(url);
// Wait for all filters to be visible
browser.wait(EC.visibilityOf(filter , 10000));
// Click on each filter, and select the first avaiable option
filter.each(function(main_filter){
browser.actions().mouseMove(main_filter).click().perform().then(function(){
browser.driver.wait(EC.visibilityOf(first_opt,15000));
}).then(function(){
browser.actions().mouseMove(first_opt).click().perform();
});
});
// Click on back button
bb.each(function(backbutton){
browser.actions().mouseMove(backbutton).click().perform();
}).then(function(){
browser.sleep(2000);
});
})
})