"在缓存中找不到元素 - 也许页面自查找以来已经发生变化"显示

时间:2014-03-12 10:14:24

标签: java selenium selenium-webdriver element browser-cache

“在缓存中找不到元素 - 当我注销并尝试在同一页面登录时,页面可能已被更改”。

在上述情况下,登录到应用程序成功,当我从应用程序注销时,再次显示登录页面。问题是:当我尝试在同一页面中再次登录时,它显示未在缓存中找到的元素 - 可能自查找以来页面已更改

登录网址(新鲜,第一次): // firco / en_US / d Logput URL(再次显示登录页面): // firco / en_US / logout /

我想在第一次和第二次登录时使用相同的驱动程序(浏览器实例)。

public static void main(String[] args) 
WebDriver driver = new FirefoxDriver();
driver.get("//Continuity/en_US/");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement uname = driver.findElement(By.xpath(".//*[@id='text-input-element-15']"));
WebElement pwd = driver.findElement(By.xpath("id('text-input-element-16')"));
WebElement busunit = driver.findElement(By.xpath("id('text-input-element-22')"));
WebElement login = driver.findElement(By.id("login-button"));
uname.sendKeys("RAGHU");
pwd.sendKeys("Hello00");
login.click();
WebElement LogoutButton = driver.findElement(By.xpath(".//*[@id='logout-button']"));
LogoutButton.click();
driver.get("//Continuity/en_US/");
uname.sendKeys("SUGU");

在上面的代码中,我希望用户在第一次和第二次登录时(注销后)在同一个驱动程序中取消命名

1 个答案:

答案 0 :(得分:4)

由于页面刷新或页面更改,在登录后,您在单击登录按钮之前存储的Web元素将不会出现在缓存中。您需要再次存储这些Web元素,以便在缓存下再次使用它们。我已经修改了一些可能有用的代码:

public static void main(String[] args) 
WebDriver driver = new FirefoxDriver();
driver.get("//Continuity/en_US/");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement uname = driver.findElement(By.xpath(".//*[@id='text-input-element-15']"));
WebElement pwd = driver.findElement(By.xpath("id('text-input-element-16')"));
WebElement busunit = driver.findElement(By.xpath("id('text-input-element-22')"));
WebElement login = driver.findElement(By.id("login-button"));
uname.sendKeys("RAGHU");
pwd.sendKeys("Hello00");
login.click();
WebElement LogoutButton = driver.findElement(By.xpath(".//*[@id='logout-button']"));
LogoutButton.click();
driver.get("//Continuity/en_US/");
uname = driver.findElement(By.xpath(".//*[@id='text-input-element-15']"));
uname.sendKeys("SUGU");