实际上我试图在登录页面中检查用户名和密码是否正确。 所以我编写了即将登录的代码。检查用户是否在注销按钮可见时有效。
但我的陈述不起作用
driver.findElement(By.id("username")).sendKeys(sUsername);
driver.findElement(By.id("password")).sendKeys(sPassword);
driver.findElement(By.name("login")).click();
boolean logvisibile = driver.findElement(By.xpath(".//*[@id='account']/ul/li[2]/a")).isDisplayed();
Thread.sleep(1000);
if(logvisibile == true)
{
System.out.println("Succesfull");
}else
{
System.out.println("Failed");
}
}
**输出:
失败:测试(“testuser_1”,“测试@ 123”) org.openqa.selenium.NoSuchElementException:无法找到元素: {“method”:“xpath”,“selector”:“.//* [@ id ='account'] / ul / li [2] / a”}命令 持续时间或超时:10.06秒有关此错误的文档, 请访问:http://seleniumhq.org/exceptions/no_such_element.html **
答案 0 :(得分:0)
我认为即使在单击“登录”之前,您也在检查LogOut按钮的可见性。 (假设//*[@id='account']/ul/li[2]/a
是您的退出按钮)
boolean logvisibile = driver.findElement(By.xpath(".//*[@id='account']/ul/li[2]/a")).isDisplayed();
driver.findElement(By.name("login")).click();
首先点击登录,然后检查可见性。
driver.findElement(By.name("login")).click();
boolean logvisibile = driver.findElement(By.xpath(".//*[@id='account']/ul/li[2]/a")).isDisplayed();
也无需执行此操作 - if(logvisibile == true)
您可以执行if(logvisible)
编辑:检查此解决方案的登录方案,完全正常。
public static void main(String[] args) {
driver = new FirefoxDriver();
driver.navigate().to("http://newtours.demoaut.com/mercurysignon.php");
WebElement username = driver.findElement(By.cssSelector("input[name='userName']"));
username.sendKeys("dharam111");
WebElement password = driver.findElement(By.cssSelector("input[name='password']"));
password.sendKeys("password");
WebElement loginBtn = driver.findElement(By.cssSelector("input[name='login']"));
loginBtn.click();
List<WebElement> objLogOutLink = driver.findElements(By.cssSelector("a[href*='signoff']"));
if(objLogOutLink.size() > 0){
if(objLogOutLink.get(0).getText().contains("SIGN-OFF")){
System.out.println("Login successful...Success");
}
}
else{
System.out.println("Login Failed.");
}
}