我已经用Java编写了一段时间的Selify脚本。我今天遇到了一个非常奇怪的问题。问题是这样的:
我使用webelement.lear()方法清除了一个文本字段,稍后在执行下一个命令(Click Event)时,我之前清除的文本区域现在用以前填充的值填充。
以下是代码片段:
mobileNumField.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).click();
emailAddress.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).sendKeys(Keys.TAB);
8条答案
按热度按时间uqcuzwp81#
我不知道您的元素保留其值的确切原因,但您可以尝试使用元素对象的sendKeys方法发送‘Ctrl+A+Delete’组合键来替代文本清除:
2ic8powd2#
您尝试填充的字段可能已将
autocomplete
属性设置为ON。Reference(https://www.w3schools.com/tags/att_form_autocomplete.asp)如果
clear()
在代码行执行时工作正常,那么可以肯定地说这不是Web驱动程序特有的问题。如果您能显示您正在处理的页面部分的html片段,将会有所帮助。
可能的调试领域:
1.使用Java脚本执行器强制删除页面加载时的自动完成属性
1.关闭驱动程序级别上的自动完成设置。我相信解决方案会根据所使用的驱动程序而有所不同。
祝好运!
PS:那些
Thread.sleep
是不可取的。9jyewag03#
我通过在BasePage中添加一个函数来清除给定WebElement的字段,从而解决了这个问题。
您也可以在遇到问题的页面中实现此方法。
voj3qocg4#
我正在使用Mac,下面的代码也很有帮助
wztqucjr5#
我在使用自动补全插件的文本字段时遇到了类似的问题。我必须显式清除属性值并执行SendKeys。我创建了一个扩展方法来封装行为,希望下面的代码片断能有所帮助:
p4rjhz4m6#
面临着类似的问题。输入字段将被清除,但错误消息不会更新。似乎只有当您输入和删除一个字符时,某些输入字段才能正常工作:
axkjgtzd7#
希望这有助于清除该字段,然后
sendKeys()
所需的值zzwlnbp88#
在一些Web表单中,清除字段后跟
.sendKeys()
不起作用,因为它会不断地用某个自动填充值重新填充它(在我的例子中,这是由于输入元素的onFocus属性函数)。动作链帮不上忙,我唯一能做的就是将Value属性直接替换为Java脚本:在Java中:
在Python中(几乎完全相同):
有关该解决方案的Java版本的更多信息,请参阅question。