我使用 Selenium Webdriver 用 Java 编写了一个测试,它在视觉上清除了用 Angular 2 编写的文本字段,但 Selenium 实际上并没有清除 DOM 中的字段。
我需要从文本字段中收到一条警报,提示您无法创建空标题,并且该警报不会出现,因为 DOM 仍然显示有一个标题,即使 Selenium 应该清除了该字段:
ng-reflect-length="10"
ng-reflect-model="New Survey"
Run Code Online (Sandbox Code Playgroud)
如果确实清楚的话,DOM 不应该包含上面的角度代码。
我最初尝试使用Java Selenium的正确格式来清除:
public void clearTextField(){
webElement.clear();
}
Run Code Online (Sandbox Code Playgroud)
这会在视觉上清除文本字段,但那些 Angular 2 属性和值不会像它们应该的那样在 DOM 中消失。这会导致文本字段中的字符计数器保持在 90 个字符,而不是应有的 100 个字符。如果是 100 个字符,我就会收到警报。
如果我执行以下操作,上述 Angular 2 属性和值将反映 sendKeys 更改:
public void sendKeysToTextField(String inputText){
webElement.sendKeys(inputText);
}
Run Code Online (Sandbox Code Playgroud)
但是,清除文本字段时 DOM 仍然不会更新。
我有一个 hacky 解决方法,它强制 RobotUtility 退格,并且需要坐标来定位页面。但这仅适用于本地。
请帮忙!谢谢。