“在缓存中找不到元素 - 当我注销并尝试在同一页面登录时,页面可能已被更改”。
在上述情况下,登录到应用程序成功,当我从应用程序注销时,再次显示登录页面。问题是:当我尝试在同一页面中再次登录时,它显示未在缓存中找到的元素 - 可能自查找以来页面已更改
登录网址(新鲜,第一次): // 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");
在上面的代码中,我希望用户在第一次和第二次登录时(注销后)在同一个驱动程序中取消命名
答案 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");