【问题标题】:click element in robot framework is not working机器人框架中的单击元素不起作用
【发布时间】:2021-06-06 11:23:34
【问题描述】:

Click Element 在 Robot Framework 中不起作用,在 log.html 中显示它点击了元素,但实际上并没有在浏览器上发生

此应用程序不是 Angular JS 应用程序。

我在其他 Angular JS 应用程序中尝试过相同的功能,效果很好。

我的机器人代码如下:

*** Settings ***
Library    Selenium2Library
*** TestCases *** 
   Login to Application
        Open Browser    ${url}    ff
        Maximize Browser Window
        Select from List by value    id=selectedCountry    MU
        Input Text    id=userid    rajaint
        Input Password    id=password    rajaint1
        Click Element    id=Submit1

这可能是什么原因?

我被困在自动化中,因为我在登录时停止了。

我不能分享申请网址,因为它是机密的。

【问题讨论】:

  • 向我们展示您的机器人代码?
  • 更新问题,请查收
  • 是否有任何隐式/显式等待?仅出于调试目的在 Click Element 关键字之前放置一个 Sleep | 2s 关键字
  • 我在Click Element前后放置了sleep | 5s,实际上并没有点击元素
  • 我不完全知道为什么这不起作用。所以我要把我的调试步骤扔给你! :D 它是一个按钮吗?如果是按钮,你试过Click Button吗?

标签: robotframework


【解决方案1】:

在与 Sarada 联系 chat 后 - 我们发现问题出在他的申请上。问题是应用程序必须失去下拉菜单和用户名字段的焦点才能通过验证 - 并允许来自机器人的更多输入。

经过一些尝试和错误,我们想出了如何让元素失去焦点并让验证按预期工作;这反过来意味着其他一切工作顺利!

我建议Focus,但没有奏效,所以我们强制使用:

Press Key    id=userid    \\9

向浏览器发送 Tab。让它失去焦点并完成验证!

最后机器人文件看起来像:

Open Browser ${url} ff 
Maximize Browser Window 
Wait Until Element Is Visible id=selectedCountry 10s 
Click Element id=selectedCountry 
Select from List by value id=selectedCountry MU 
Click Element id=selectedCountry 
sleep 2s 
Focus id=userid 
Click Element id=userid 
Input Text id=userid rajaint 
Press Key id=userid \\9 
sleep 5s 
Input Password id=password rajaint1 
sleep 2s 
Click Button id=Submit1 
sleep 10s 
Capture Page Screenshot

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,但 Press Key Trick 不起作用。 我改用了这个技巧

    执行 JavaScript

    document.getElementById('Submit1').click()
    

    它运行良好

    【讨论】:

      【解决方案3】:

      我也遇到了类似的问题。 JavaScript 运行良好。

      Execute Javascript  document.querySelector('#HIRESearchTable > tbody > tr > td.searchLink > span').click();
      

      【讨论】:

        【解决方案4】:

        对于此类场景,您可以使用JavaScript Executor。但在大多数情况下,您找不到元素的 Id。所以我实现了一个可以与 xpath 一起使用的通用关键字。

        Click Element By JavaScript Executor [Arguments] ${elementXpathLocator} ${retryScale}
            [Documentation]
            ...  Click an element by xpath using javascript executor  ...
        
            Wait Until Keyword Succeeds    2x     1 s    Wait Until Element Is Enabled    ${elementXpathLocator}
            Execute JavaScript  document.evaluate("${elementXpathLocator}", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).click();
        

        【讨论】:

          【解决方案5】:

          找到元素后睡 1 秒。它对我有用。

          【讨论】:

            猜你喜欢
            • 2018-09-20
            • 2018-06-19
            • 2019-12-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-05-23
            • 2017-07-29
            • 2015-11-11
            相关资源
            最近更新 更多