Java org.openqa.selenium.StaleElementReferenceException:stale元素引用:尝试输入数字时元素未附加到页面文档

Java org.openqa.selenium.StaleElementReferenceException:stale元素引用:尝试输入数字时元素未附加到页面文档,java,selenium-webdriver,Java,Selenium Webdriver,我试图在下面的HTML中给出的文本字段中输入帐号。但是,当我调试时,输入的数字被完全删除,有时只输入最后的数字,有时失败 <input id="consumerNonew" name="consumerNonew" type="text" countchar="" length="10" display="true" setvallocal="" value="940" maxlength="10" ng-blur="click($event,{s:&quot;consumerNo

我试图在下面的HTML中给出的文本字段中输入帐号。但是,当我调试时,输入的数字被完全删除,有时只输入最后的数字,有时失败

<input id="consumerNonew" name="consumerNonew" type="text" countchar="" length="10" display="true" setvallocal="" value="940" maxlength="10" ng-blur="click($event,{s:&quot;consumerNonew&quot;,e:&quot;blur&quot;,p:&quot;dewaPaymentInpForm&quot;});" autocomplete="off" class="  validate  is-invalid-input">

下面是代码

public void dwshortname_and_Contract_number_is_entered() throws Throwable {

    Thread.sleep(5000);

    driver.findElement(By.id("consumerNamenew")).sendKeys("TestUser");
    Thread.sleep(5000);         
    WebElement Accnumber= driver.findElement(By.id("consumerNonew"));

    final int MAXIMUM_WAIT_TIME = 120;
    final int MAX_STALE_ELEMENT_RETRIES = 10;

    WebDriverWait wait = new WebDriverWait(driver, MAXIMUM_WAIT_TIME);
    int retries = 0;
    while (true)
    {
        try
        {
            wait.until(ExpectedConditions.elementToBeClickable(By.id("consumerNonew"))).click();

              Accnumber.sendKeys("2012269940");
            Accnumber.sendKeys(Keys.TAB); 

            break;

        //  

        }
        catch (StaleElementReferenceException e)
        {
            if (retries < MAX_STALE_ELEMENT_RETRIES)
            {
                retries++;
                continue;
            }
            else
            {
                throw e;
            }


        }               

         }


 }
public void dwshortname\u和\u合同号\u已输入()可丢弃{
睡眠(5000);
driver.findElement(By.id(“consumerNamenew”)).sendKeys(“TestUser”);
睡眠(5000);
WebElement Accnumber=driver.findElement(By.id(“consumerNonew”);
最终整数最大等待时间=120;
最终整数最大值元素重试次数=10;
WebDriverWait wait=新的WebDriverWait(驱动程序,最长等待时间);
int重试次数=0;
while(true)
{
尝试
{
等待.until(ExpectedConditions.elementToBeClickable(By.id(“consumerNonew”))。单击();
Accnumber.sendKeys(“2012269940”);
Accnumber.sendKeys(Keys.TAB);
打破
//  
}
捕获(StaleElementReferenceException e)
{
如果(重试次数
机器人类的示例代码:

Robot RoboKey = new Robot();
RoboKey.delay(2000);
RoboKey.keyPress(KeyEvent.VK_2);
RoboKey.keyPress(KeyEvent.VK_0);
RoboKey.keyPress(KeyEvent.VK_1);
。 . .


等等

而不是存储WebElement,然后单击它(通过使用Id过滤器),然后再次使用存储的WebElement。尝试单击,然后直接使用Id筛选器和发送密钥。而不是储存。当您存储web元素-->执行操作-->再次使用存储的元素时,元素变为陈旧。我尝试直接使用Id筛选器而不存储元素。但是看到同样的结果。哦,好吧,那就不要认为这是一般性的问题。必须针对您的应用程序。要调试,请尝试一次输入一个字母,每个字母之间的延迟为2秒,而不是一次输入整个字符串。。这可能会帮你弄清楚到底发生了什么……好的。我试试看。我试着一次传递一个数字。在调试模式下,一切正常。但是,当我运行脚本时,输入的第一个数字被删除,第二个数字只显示出来。我一开始只是这样做,但它不起作用。我将尝试robot类,看看它是否能正常工作,希望上面的例子能对你有所帮助!它成功了:-)机器人课。但是我的数字有重复的整数,虽然我提到过,但没有输入。。。有什么想法吗?
driver.findElement(By.id(“consumerNonew”)).sendKeys(“”)//2012269940机器人=新机器人();robot.keyPress(KeyEvent.VK_2);robot.keyPress(KeyEvent.VK_0);robot.keyPress(KeyEvent.VK_1);robot.keyPress(KeyEvent.VK_2);robot.keyPress(KeyEvent.VK_2);机器人按键(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_9);robot.keyPress(KeyEvent.VK_9);机器人按键(KeyEvent.VK_4);robot.keyPress(KeyEvent.VK_0);robot.keyPress(KeyEvent.VK_选项卡)哦,你是说没有输入“9”和“2”?