Java Selenium 和 Angular 2 | Webdriver 以可视方式清除文本字段,但不从 DOM 中清除

问题描述 投票:0回答:2

我有一个使用 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 退格,并且需要坐标来定位页面。但这仅适用于本地。

请帮忙!谢谢你。

java angular dom selenium-webdriver
2个回答
0
投票

您是否尝试过发送 Control-A 来选择字段中的所有内容,然后发送退格键来清除字段?

object.sendkeys("^a{BACKSPACE}");


0
投票

试试这个:

Actions action = new Actions(driver);
action.moveToElement(element).doubleClick().click().sendKeys(Keys.BACK_SPACE).perform();
© www.soinside.com 2019 - 2024. All rights reserved.