Как получить псевдоэлементы в 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.

Другие вопросы по тегам