机械手框架-清除元素文本关键字无效

时间:2018-11-28 11:32:19

标签: selenium robotframework

我们有一个带有html结构的文本字段,如下所示。

<input class="css-1npmunl" name="some.name" aria-label="New Employee ID" data-qa="some.data" placeholder="" value="TEST1" type="Text">

内置的Selenium2Library关键字Clear Element Text ${Field_Locator}不能按预期清除文本字段。实际上,该字段会被清除一会儿,当我随后执行其他一些操作时,例如单击一个Save按钮,该字段值将再次使用相同的值(TEST1)重新填充( value属性包含该字段的实际值。

但是,当我们手动执行相同的操作时,它会按预期工作。当我使用开发人员工具检查DOM时,似乎Clear Element Text关键字实际上并未使value属性的值变为空。但是在手动执行操作时,value属性的值将被清空。

5 个答案:

答案 0 :(得分:2)

我几次遇到相同的问题(React总是最底层!:),并尝试了不同的方法。按照注释中的建议设置一个空值有时会起作用,但会随机失败。

最后,我决定采用“直接”解决方案-发送与当前值长度一样多的退格字符。副作用是,这也接近正常的用户交互:);真正的副作用是,此操作比Clear Element Text调用慢,对于较长的文本可能要花费几秒钟。

以下是如何在RF中进行操作的示例:

${value}=     Get Element Attribute   ${Field_Locator}      value
${backspaces count}=    Get Length      ${value}
Run Keyword If    """${value}""" != ''    # if there's no current value - no need to slow down by an extra SE call
...     Repeat Keyword  ${backspaces count +1}  Press Key  ${Field_Locator}   \\08    # this is the code for the backspace key; "backspaces count +1" - just too be sure :)

答案 1 :(得分:1)

自从发布者回答说,他(她)使他们的代码正常工作以来,但是这个回答对我没有帮助;这是我的答案。

我遇到了完全相同的问题;使用Clear Element Text确实清除了屏幕上的文本字段,但是提交表单后,验证仍然失败。

Input text ${EMPTY}也不适合我。

我使用它的方法是放入一些新文本,然后立即使用
Press Keys [locator] A+BACKSPACE将其再次删除。我读了许多答案,这些答案找到了字符串的长度,并且多次退格。但是,我只是简单地按下键盘上的“ a”,然后使用退格键再次删除该“ a”。

答案 2 :(得分:1)

似乎某些框架在清除某些文本字段时会遇到问题。在这些情况下,我会创建一个类似于以下内容的关键字:

Clear Text Field

  [Arguments]  ${inputField}
  press keys  ${inputField}  CTRL+a+BACKSPACE

答案 3 :(得分:0)

除了使用“清除元素文本”关键字之外,还有很多方法可以做到这一点。我建议使用“按键”关键字来选择文本字段中的所有文本。然后,按“BACKSPACE”键擦除它。

RF 脚本示例如下:

Press Keys          [locator]               CTRL+a
Press Keys          [locator]               BACKSPACE
Input Text          [locator]               ${new_text}
Click Button        ${save_button}

答案 4 :(得分:0)

另一种解决方法:

按下键 ${web_text_email_id} \\1

按下键 ${web_text_email_id} \\127

输入文本 ${web_text_email_id} ${user_name}