selenium-webdriver - 如何获取加载微调器的 xpath
问题描述
我有以下 dom 。我需要找到元素(::before)。这之前代表加载微调器。当此加载微调器不可见时,我的元素将可见。
<h3 class="text-center">
::before
</h3>
我能够识别到 h3 但无法在 *.only :: 之前得到这个 *:: 在微调器消失且我的元素可见的部分之前来自 DOM 的部分。我尝试了不同的 xpath 轴位无法到达此元素
解决方案
不幸的是,像这样的伪元素::before
并不真正存在于 DOM 树中(因此得名),因此无法使用 XPath 选择它们。您需要改用 CSS 选择器:
console.log(
window.getComputedStyle(
document.querySelector('h3'), ':before'
)
);
/* Add a heart before h3 */
h3::before {
content: "♥";
}
<h3 class="text-center">
H3
</h3>
然后使用 aJavascriptExecutor
将 JS 注入浏览器并[获取返回值][1]:
String script = "return window.getComputedStyle(document.querySelector('h3'),':before').getPropertyValue('content')";
JavascriptExecutor js = (JavascriptExecutor)driver;
String content = (String) js.executeScript(script);
推荐阅读
- android - JSONArray 仅返回我的数据库的最后一项
- android - 在 Android Preferences 中更改选中和禁用的 SwitchPreferenceCompat 的颜色
- ssl - 400 Bad Request 未发送所需的 SSL 证书。带来不便敬请谅解
- machine-learning - 如何将在特征上训练的分类器与缺失数据进行比较?
- php - Swoole 安装错误
- ios - BLE 按钮在约 30 秒后断开连接
- javascript - 使用 iOS 11 在 Safari 中强制打开链接
- git - 吉特。删除分支
- java - for 循环迭代 - 如何避免逗号
- android - Tablayout 选项卡中的键盘导航