【问题标题】:What could be a reason for not finding a web element by its id?没有通过 id 找到 Web 元素的原因可能是什么?
【发布时间】:2020-01-08 14:45:09
【问题描述】:

我已经使用 Robot Framework 几天来在我的工作网络应用程序中自动执行一些基本流程测试并发现了一个问题:

无法使用 id 定位器找到一些 Web 元素

为此,我一直在使用 SeleniumLibrary。尝试使用不同的定位器,例如 xPath 和 CSS 选择器,在查找元素和关键字 Wait Until Page Contains ElementWait Until Element Is Visible 之前设置隐式等待,但仍然给出相同的结果。

首先我检查某个元素是否存在:

Page Should Contain Element id=some-button

然后我尝试将一些键发送到输入:

Input Text id=some-input Some characters

然后我收到错误Element with locator 'id=some-button' not found

页面结构如下:

...
<body>
  <div>
   ...
   <div>
    <form> 
     <div>
       <button id=some-button />
     </div>
     <div>
       <!--- 8 opening div tags -->
          <input id=some-input />
       <!--- 8 closing div tags -->
     </div>
    </form>    
   </div>
  </div>
</body>
...

有人知道为什么会这样吗?

更新:

试过了

/html/body/div/div[1]/form/div[2]/div[1]/div[2]/div[2]/div[2]/div/div[1]/div[1]/div/input

而不是

//*[@id="some-button"]

而且效果很好。

【问题讨论】:

  • 您是否尝试在输入之前检查该元素是否存在?
  • 运行关键字Wait Until Element Is VisibleWait Until Page Contains Element 也失败
  • 您是否检查过它们是否在 IFRAME 内?
  • 文档中没有 iframe 元素。
  • 请显示实际的错误信息。

标签: selenium robotframework ui-automation


【解决方案1】:

没有通过 id 找到 Web 元素的原因可能是什么?

这些是我能想到的原因:

  1. 该元素确实不在页面上在您查找它时。这可能是因为您没有等待页面完成呈现,也可能是它真的不存在。
  2. 您的 id 可能有错字
  3. 元素在框架中
  4. 元素存在,但随后被一些正在执行的 javascript 删除

【讨论】:

    【解决方案2】:

    当您使用任何 Xpath 或 CSS 选择器时,您应该始终在 Chrome 开发者工具中检查它。

    步骤
    1。右键单击该页面,然后单击“检查”
    2。转到控制台选项卡
    3。如果是 XPath,使用 $x 进行评估,如果是 CSS 选择器,使用 $$ 进行评估
    例如对于
    Xpath: $x("//input[@id='Username']")
    CSS: $$("#Username")

    【讨论】:

    • 您实际上可以通过 css 或 xpath 在检查器面板中进行搜索。试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2021-09-01
    • 2012-01-01
    相关资源
    最近更新 更多