Ответ 1
Недавно мы столкнулись с чем-то подобным.
Что помогло нам подождать, пока элемент будет иметь определенное значение CSS, используя browser.wait()
:
function waitForCssValue (elementFinder, cssProperty, cssValue) {
return function () {
return elementFinder.getCssValue(cssProperty).then(function (actualValue) {
return actualValue === cssValue;
});
};
};
Использование:
browser.wait(waitForCssValue(obj, 'color', color2), 5000);
Здесь мы в основном ожидаем до 5 секунд, чтобы значение CSS color
было равно color2
. Примените вызов ожидания сразу после наведения элемента.
Кроме того, я помню, что просмотр этой прокрутки помог решить подобные проблемы в SO:
browser.executeScript("arguments[0].scrollIntoView();", obj);
Максимальное окно браузера также может помочь, мы обычно делаем это в onPrepare()
:
onPrepare: function () {
browser.driver.manage().window().maximize();
},
Дополнительная заметка о PhantomJS
:
Прежде всего, разработчики транспортиров рекомендуют не тестировать сквозные тесты protrator
с помощью PhantomJS
:
Примечание. Мы рекомендуем использовать PhantomJS для испытаний с помощью Protractor. Есть много сообщений о проблемах при сбое и приведении в действие PhantomJS в отличие от реальных браузеров.
Кроме того, см.
Здесь я пытаюсь понять, что вы должны пожертвовать аргументом "Fails in Phantom JS".