WebdriverIO+Appium中获取伪元素的方法

How to get pseudo elements in WebdriverIO+Appium

我想在使用 WDIO 和 Appium 对 Android 混合应用程序,因为设计者已将当前的响应式设计状态存储在那里。所以我的测试会知道预期的布局(元素)。

相关问题的多个答案(1; ; 3) indicated that using .getComputedStyle() might be the only solution. But this does not seem to work in my tests. The error is window is not defined for window.getComputedStyle(...) or document is not defined if I use document.defaultView.getComputedStyle(...). Also selectors themselves can't address pseudo-elements it seems

我多次尝试之一的例子:

document.defaultView.getComputedStyle($('body'),'::before').getPropertyValue('content')

问题:我是否需要以某种方式将 windowdocument 导入到我的测试中?是否有其他方法可以从测试中获取 windowdocument

最终:如何获得混合 Android 应用的 <body>::beforecontent 值?

感谢 Jeremy Schneider (@YmerejRedienhcs) 和 Erwin Heitzman (@erwinheitzman) 的帮助!

一种解决方案是使用 execute 函数:

let contentMode = browser.execute(() => {
  let style = document.defaultView.getComputedStyle(document.querySelector('body'),'::before');
  return style.getPropertyValue('content')
});

或者也许 getHTML也可以做一些事情。