首页 > 解决方案 > 无法在量角器中找到元素

问题描述

我有一个如下所示的用户界面。

<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 中。我对吗?

标签: node.jsprotractor

解决方案


如果您检查您提供的 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']

推荐阅读