selenium clear()命令不清除该元素

kar*_*rya 5 selenium selenium-chromedriver selenium-webdriver

我一直用Java编写selenium脚本一段时间.我今天遇到了一个非常奇怪的问题.

这是问题:我使用webelement.clear()方法清除了一个文本字段,稍后在执行下一个命令(单击事件)时,我之前清除过的文本区域现在填充了先前填充的值.

这是代码片段:

mobileNumField.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).click();
emailAddress.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).sendKeys(Keys.TAB);
Run Code Online (Sandbox Code Playgroud)

Aut*_*Owl 14

我不知道您的元素保持其值的确切原因,但是您可以尝试通过使用元素对象的sendKeys方法发送“ Ctrl + A + Delete”组合键来尝试替代文本清除:

emailAddress.sendKeys(Keys.chord(Keys.CONTROL,"a", Keys.DELETE));
Run Code Online (Sandbox Code Playgroud)

  • 对于 python,它是“from selenium.webdriver.common.keys import Keys;” element.send_keys(Keys.CONTROL, "a"); element.send_keys(Keys.DELETE)` (6认同)

iam*_*nos 8

您尝试填充的字段可能已将autocomplete属性设置为打开.[参考]

如果clear()在行执行时有效,那么可以肯定地说这不是特定于webdriver的问题.

如果您可以显示您正在处理的页面部分的html片段,将会有所帮助.

可能的调试领域:

  • 使用java脚本执行程序强制删除页面加载时的自动完成属性
  • 关闭驱动程序级别的自动完成设置.我相信解决方案会因使用的驱动程序而异.

    祝好运!

    PS:那些Thread.sleep是不可取的.


    小智 5

    我通过向 BasePage 添加一个函数来清除给定 WebElement 的字段来解决它。

     public void clearWebField(WebElement element){
        while(!element.getAttribute("value").equals("")){
            element.sendKeys(Keys.BACK_SPACE);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    您也可以在遇到问题的页面中实现此方法。


    小智 1

    面临类似的问题。输入字段已清除,但错误消息未更新。似乎某些输入字段只有在输入和删除字符时才能正常工作:

    element.sendKeys(text);
    element.sendKeys(Keys.SPACE, Keys.BACK_SPACE);
    
    Run Code Online (Sandbox Code Playgroud)