我有一个简单的方法可以将密钥发送到文本框,但有时会丢失结束字母或整个文本,但是selenium会返回'通过'对于此测试步骤。这只发生在具有4个元素的特定对话窗口中: 1.选择 2.输入文字 3.保存按钮 4.取消按钮
测试用例从选择列表中选择一个值,然后将给定的字符串键入文本框并单击“保存”。
在键入文本后,我可以以某种方式验证它是否等于预期的文本?我尝试使用textboxelement.getText()但它返回null,可能是因为光标仍然在文本框中并且未发送文本。我想在不按下ENTER键的情况下解决它,因为它可能会关闭此对话框窗口。
我的发送文字方法:
public final void sendText(final String value, final String id) {
final By locator = By.id(textOrVariableValue(id));
final WebElement element = getElementByLocator(locator, ExpectedConditions.elementToBeClickable(locator), 10, true);
element.clear();
element.sendKeys(textOrVariableValue(value));
}
提前致谢!
答案 0 :(得分:2)
在发送密钥到文本框并在输入文本后立即尝试验证如果它等于预期文本将始终< em> return null ,这是预期行为。
当您调用 sendKeys()
时,它只是在文本框中粘贴字符串。不执行任何其他操作,也不返回任何内容。所以 HTML DOM
没有变化。
所以,当你尝试做的时候:
textboxelement.getText()
null 会被退回。
当您点击保存按钮时,onClick()
按钮Save
按钮会执行预期的功能(调用 {{ 1}} / JavaScript
)这会改变 AJAX Scripts
,并且文本可以通过 {{进行调整1}} 即可。现在,如果您尝试:
HTML DOM
您可以检索文本。
最后,正如您提到DOM Tree
, textboxelement.getAttribute("attribute_name");
without pressing a key like ENTER because it might close this dialog window
以及您的 DOM Tree
Selenium
通过 findElement()或 findElements()