node.js - 无法在量角器中找到元素
问题描述
我有一个如下所示的用户界面。
<div class="BtyD1c WFUbU" jsname="Y3PF3">
<div>.........</div>
<div>.........</div>
<div>.........</div>
<div>.........</div>
<div>.........</div>
<div jsname="YCbqLe" style="display: block;">
<div>.........<div>
<div class="qh jxzYFc ZlpBcf XWx4Gf IbyGtb Tea E5 OI LtchOd oj" jscontroller="pxq3x" jsaction="clickonly:KjsqPd; focus:Jt1EX; blur:fpfTEe; input:Lg5SV;" jsshadow jsname="NuJwOd">
<div class="PI jh">
<div class="D5 fda">
<div class="F5">
<input type="text" class="Ij Sl" jsname="YPqjbf" autocomplete="off" tabindex="0" aria-label="Text input area where you can input a URL for the action." maxlength="1500" value="" autofocus="" data-initial-value="enter url here" badinput="false" dir="ltr" aria-invalid="false">
</div>
<div>.........</div>
我需要在此输入字段中输入一些输入。为此,我使用了定位器
".Xz2Gac .WFUbU div:nth-child(6) .jxzYFc input"
但它说 ElementNotVisibleError:元素不可交互。但是当我将定位器作为
".Xz2Gac .WFUbU div:nth-child(7) .jxzYFc input"
然后它成功地将输入数据输入到该输入字段中。我不明白为什么会这样?因为输入字段位于“WFUbU”类的第 6 个 div 中。我对吗?
解决方案
如果您检查您提供的 html 示例,您可以看到只有 6 个孩子。对于 css 匹配器,它可能会忽略查找第 7 个子项(不存在)并继续匹配下一个案例的条件。
通过以下实验:
.WFUbU .jxzYFc input
你会得到输入
.WFUbU div:nth-child(6) .jxzYFc input
你再次得到输入
这是关于 nth:child 的完整解释
https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child
注意:避免基于子元素创建此类定位器,因为创建/更新网站的动态变化。
如果唯一的 jsname 始终是 const ,请使用类似:CSS 选择器
input[jsname='YPqjbf']
Xpath 选择器
//input[@jsname='YPqjbf']
推荐阅读
- latex - 如何在表格 Latex 中使用逗号设置数字
- robots.txt - 允许文件夹,但不允许特定子文件夹
- ios - Cocoa pods 资源包 xcassets
- node.js - node.js、vue.js 和 express.js 堆栈开发
- java - Groovy - 如何创建带有变量的路径目录
- php - 表单不应包含额外字段 Symfony 4
- python - Python Pandas 2 列关系
- android - 在调用另一个类的 ViewModel 中实现 Dagger
- spring-boot - Spring Boot:使用 Thymeleaf 从会话中删除属性
- python-3.x - Urllib.request.urlopen().read 不起作用