Robotframework 机器人框架中的“单击”元素不工作

Robotframework 机器人框架中的“单击”元素不工作,robotframework,Robotframework,Click元素在Robot框架中不起作用,在log.html中它显示它单击了元素,但实际上在浏览器上没有 此应用程序不是Angular JS应用程序 我在另一个应用程序中尝试了相同的功能,它是Angular JS,运行良好 我的机器人代码如下: *** Settings *** Library Selenium2Library *** TestCases *** Login to Application Open Browser ${url} ff

Click元素
在Robot框架中不起作用,在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
这是什么原因呢

我陷入了自动化,因为我在登录时停止了

我无法共享应用程序url,因为它是机密的。

在与Sarada进行协商后,我们发现问题出在他的应用程序上。问题是应用程序必须失去下拉菜单和用户名字段的焦点,才能通过验证,并允许robot进行更多输入

经过一些尝试和错误之后,我们找到了如何失去元素的焦点并允许验证按预期工作的方法;这反过来意味着其他一切都顺利进行

我建议使用
聚焦
,但这不起作用,因此我们强制使用:

Press Key    id=userid    \\9
将选项卡发送到浏览器。使其失去焦点,并使验证结束

最后,Robot文件如下所示:

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

我也遇到过同样的问题,但按键技巧不起作用。 我用了这个黑客

执行JavaScript

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

它运行良好

我也遇到过类似的问题。 JavaScript工作得非常好

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

对于这种情况,可以使用
JavaScript执行器
。但在大多数情况下,您无法找到元素的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();

找到元素后再睡1s。它适合我。

给我们看你的机器人代码?更新了问题,请检查是否有任何隐式/显式等待?仅出于调试目的,将
Sleep | 2s
放在
Click元素
关键字之前。我已经将
Sleep | 5s
放在
Click元素
之前和之后,它没有被实际单击。我不知道为什么这不起作用。所以我要把我的调试步骤扔给你它是一个按钮吗?如果是按钮,您是否尝试过
单击按钮