我正在尝试使用所有有效和无效的输入来验证登录部分。
这是我尝试过的代码:
public void login_Valid_Invalid_Combinations() throws BiffException, IOException, InterruptedException
{
String FilePath = "D://credentials.xls";
FileInputStream FIS = new FileInputStream(FilePath);
Workbook WB = Workbook.getWorkbook(FIS);
Sheet SH = WB.getSheet(0);
for(int row =0; row<= SH.getRows()-1; row++)
{
String userNAME = SH.getCell(0, row).getContents();
String passWORD = SH.getCell(1, row).getContents();
System.out.println("USERMANE : "+userNAME + " PASSWORD : "+passWORD);
driver.get("LOGIN PAGE URL");
driver.findElement(By.id("Email")).sendKeys(userNAME);
driver.findElement(By.id("Password")).sendKeys(passWORD);
driver.findElement(By.id("btnlogin")).click();
System.out.println(driver.findElement(By.xpath("//*[@id='eError']")).getText());
Thread.sleep(2000);
String URL = driver.getCurrentUrl();
System.out.println(URL);
if (URL.equals("URL AFTER SUCCESFULL LOGIN"))
{
System.out.println("Login Successfull");
}
else
{
System.out.println("Login Failed");
}
}
driver.close();
}
我想在每次登录失败时显示错误消息,这样可以正常工作。但是当登录成功并且输入有效时,它会显示:
“org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{”method“:”xpath“,”selector“:”// * [@ id ='eError']“}”< / p>
因为没有成功登录的错误消息。
你能帮我解决一下这个问题。
答案 0 :(得分:3)
对于这种情况,我不是try / catch的粉丝。您想要检查页面上是否存在元素,是否打印出包含的文本,否则成功登录,
sudo ./name_of_file.bin
答案 1 :(得分:2)
您可以替换
行System.out.println(driver.findElement(By.xpath("//*[@id='eError']")).getText());
用这个:
try {
WebElement elem = driver.findElement(By.xpath("//*[@id='eError']"));
System.out.println(elem.getText());
}
catch(Exception e) {
// do nothing
}
try
块中的上述代码找到带有xpath的元素。如果它存在,则继续下一行以打印文本。如果该元素不存在,则抛出异常并将其隐藏在catch
块中并安全继续。
答案 2 :(得分:0)
如果成功,您将不会收到错误消息,在这种情况下,行下面会抛出NoSuchElement异常
System.out.println(driver.findElement(By.xpath("//*[@id='eError']")).getText());
我们需要将上面的代码放在try块中然后它将处理异常。下面是更新的代码。
String userNAME = SH.getCell(0, row).getContents();
String passWORD = SH.getCell(1, row).getContents();
System.out.println("USERMANE : "+userNAME + " PASSWORD : "+passWORD);
driver.get("LOGIN PAGE URL");
driver.findElement(By.id("Email")).sendKeys(userNAME);
driver.findElement(By.id("Password")).sendKeys(passWORD);
driver.findElement(By.id("btnlogin")).click();
Thread.sleep(2000);
String URL = driver.getCurrentUrl();
if (URL.equals("URL AFTER SUCCESFULL LOGIN"))
{
System.out.println("Login Successfull");
}
else
{
System.out.println("Login Failed");
try{
System.out.println(driver.findElement(By.xpath("//*[@id='eError']")).getText());
}
catch(Exception e){
}
}
请告诉我它是否对您有所帮助。