Java 在缓存中找不到元素-可能页在查找后已更改

Java 在缓存中找不到元素-可能页在查找后已更改,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我正在测试一个web应用程序,在打开一个页面后,我需要选择一个单选按钮,然后会出现一个弹出窗口。在该弹出窗口中,我正在选择一个ID。一旦选择,它将进入主窗口,在主窗口中,我尝试选择一个ID为的文本字段。但我收到以下错误: 在缓存中找不到元素-可能页面在查找后已更改 命令持续时间或超时:50.14秒 driver.findElement(By.xpath("html/body/section/div/div[2]/div[3]/div/div/div/div/ul/li[1]/a")).cli

我正在测试一个web应用程序,在打开一个页面后,我需要选择一个单选按钮,然后会出现一个弹出窗口。在该弹出窗口中,我正在选择一个ID。一旦选择,它将进入主窗口,在主窗口中,我尝试选择一个ID为的文本字段。但我收到以下错误:

在缓存中找不到
元素-可能页面在查找后已更改
命令持续时间或超时:50.14秒

  driver.findElement(By.xpath("html/body/section/div/div[2]/div[3]/div/div/div/div/ul/li[1]/a")).click();
    driver.findElement(By.xpath("html/body/section/div/div[12]/div[1]/div/div[2]/div[3]/div/div/div/div/button[1]")).click();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    String mainWindowHandle=driver.getWindowHandle();
    driver.findElement(By.xpath("html/body/div[3]/div/div")).click();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    Set s = driver.getWindowHandles();
    Iterator ite = s.iterator();
    while(ite.hasNext())
    {
         String popupHandle=ite.next().toString();
         if(!popupHandle.contains(mainWindowHandle))
         {
               driver.switchTo().window(popupHandle);
         }
    }
    driver.findElement(By.xpath("html/body/div[3]/div/div/div[3]/div/div/div[1]/div[2]/div[4]/div[2]/a")).click();
    driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
    driver.switchTo().window( mainWindowHandle );
    driver.findElement(By.id("Title")).sendKeys("auto title");
问题是我找不到ID为“
Title”的文本字段,无法插入“auto Title


提前感谢。

通过添加

Thread.sleep(5000);

在找到元素并求解之前。

通过添加

Thread.sleep(5000);

在找到元素并求解之前。

使用
sleep()
进行硬编码时间间隔,而不是使用显式等待:

WebDriverWait wait = new WebDriverWait(driver, 30);

WebElement title = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Title")));
title.sendKeys("auto title");

不要对硬编码的时间间隔使用
sleep()
,而是使用显式等待

WebDriverWait wait = new WebDriverWait(driver, 30);

WebElement title = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Title")));
title.sendKeys("auto title");