Как получить псевдоэлементы в WebdriverIO+Appium
Я хочу получить значение (content
) из CSS псевдоэлемента (::before
) в тесте, выполненном с использованием WDIO и Appium для гибридного приложения Android, потому что дизайнер сохранил там текущее состояние адаптивного дизайна. Таким образом, мои тесты будут знать, какой макет (элементы) ожидать.
Несколько ответов на связанные вопросы ( 1; 2; 3) показали, что использование.getComputedStyle()
может быть единственным решением. Но в моих тестах это не работает. Ошибкаwindow is not defined
за window.getComputedStyle(...)
или document is not defined
если я использую document.defaultView.getComputedStyle(...)
. Кроме того, сами селекторы, похоже, не могут обращаться к псевдоэлементам.
Пример одной из моих многочисленных попыток:
document.defaultView.getComputedStyle($('body'),'::before').getPropertyValue('content')
Вопрос: Нужно ли как-то импортироватьwindow
или document
к моему тесту? Есть ли другой способ получитьwindow
или document
изнутри теста?
В конечном итоге: как я могу получить content
ценность ::before
из <body>
гибридного Android-приложения?
1 ответ
Спасибо Джереми Шнайдеру (@YmerejRedienhcs) и Эрвину Хейтцману (@erwinheitzman) за помощь!
Одно из решений - использовать execute
функция:
let contentMode = browser.execute(() => {
let style = document.defaultView.getComputedStyle(document.querySelector('body'),'::before');
return style.getPropertyValue('content')
});
В качестве альтернативы, может быть, что-то также можно сделать с getHTML
.