Использую версию chrome=60.0.3112.113, chromedriver=2.28.455520, os.name: ‘Windows 7’,npm version 5.2.1 …
Делаю следующее Алерт появляется после нажатия баттона Continue
Пробовал достучатьсячерез switch to Alert
Вданном случае получаю вместо текста алерта вот такое: "ManagedPromise::12blabla
{[[PromiseStatus]]: “pending”}
Не получается ни кликнуть,ни получить текст алерта (это foundation алерт), ни закрыть его.
Подскажите, плз, как решить проблему…
Текст логов и кода …
Спасибо за ответ, Евгений. Вроде я уже пробовал твой пример, перепроверю снова. Если не получится ничего - я вот подумал, может мне нужно было заимпортить в сам тест либы типа foundation.min.js и jquery-3.2.1.js - чтобы получить доступ к foundation алерту, как думаешь?
Юрий
Я буду честен, очень сложно что-то сказать, не пощупав ни либы, не того, как вообще UI работает.
Вопрос, а разве вы не можете работать с вашим алертом без использования switchTo. Просто бывает такое, что доступ к алерту можно получить, как к любому другому элементу DOM-а?
В любом, самом крайнем случае, всегда все можно решить через непосредственное выполнение js кода.
Евгений, попробовал ваши два способа переключиться на алерт - получаю в обоих случаях No Such Alert error. Пробовал через executeScript(“document.querySelector(локатор)”) достучаться к алерту - пишет, что document не определен, через стандартный способ element(by.xpath(локатор)) - также безрезультатно. Подскажите, плиз, если есть какие-то идеи?
Вообще, насколько я знаю, вебдрайвер (а протрактор является его оберткой) умеет работать только с нативными алертами. В данном случае алерт завязан на thirdparty библиотеку foundation.js. Может кто-то пробовал импортить сторонние библиотеки в коде протрактора и обращаться к элементу, созданному на основе этой библиотеки?
Cпасибо, Олександр, за помощь. Хотел бы уточнить: для понимания:
$(’.app-alert .alert-box’) это не функция jQuery, а протракторовский element(by.css(.app-alert.alert-box’))?
и ваша запись alertElem.getText().then(txt => console.log(alertText: ${txt})) равносильна
alertElem.getText().then(function(txt){
console.log("alertText: "+txt);
}); или нет?
Теперь вот эта ошибка: Failed: Timed out waiting for asynchronous Angular tasks to finish after 15 seconds. This may be because the current page is not an Angular application. Please see the FAQ for more details: protractor/timeouts.md at master · angular/protractor · GitHub
While waiting for element with locator - Locator: By(css selector, .app-alert .alert-box).
The following tasks were pending:
- $timeout: function () {
removeAlert(id);
}
Stack:
ScriptTimeoutError: asynchronous script timeout: result was not received in 15 seconds