我有一个使用 Selenium Webdriver 用 Java 编写的测试,它在视觉上清除了用 Angular 2 编写的文本字段,但 Selenium 实际上并没有清除 DOM 中的字段。
我需要从文本字段获取一个警报,提示您无法创建空标题,并且该警报不会出现,因为 DOM 仍然显示有一个标题,即使 Selenium 应该清除了该字段:
ng-reflect-length="10"
ng-reflect-model="New Survey"
如果确实清楚的话,DOM 不应该包含上面的 Angular 代码。
我最初尝试使用Java Selenium的正确格式来清除:
public void clearTextField(){
webElement.clear();
}
这会在视觉上清除文本字段,但那些 Angular 2 属性和值不会像它们应该的那样在 DOM 中消失。这会导致文本字段中的字符计数器保持在 90 个字符,而不是应有的 100 个字符。如果是 100 个字符,我就会收到警报。
如果我满足以下条件,上述 Angular 2 属性和值将反映 sendKeys 更改:
public void sendKeysToTextField(String inputText){
webElement.sendKeys(inputText);
}
但是,清除文本字段时 DOM 仍然不会更新。
我有一个 hacky 解决方法,它强制 RobotUtility 退格,并且需要坐标来定位页面。但这仅适用于本地。
请帮忙!谢谢你。
您是否尝试过发送 Control-A 来选择字段中的所有内容,然后发送退格键来清除字段?
object.sendkeys("^a{BACKSPACE}");
试试这个:
Actions action = new Actions(driver);
action.moveToElement(element).doubleClick().click().sendKeys(Keys.BACK_SPACE).perform();