我们有一个带有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
属性的值将被清空。
答案 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}