我尝试在自动化中创建一个场景,在该场景中,它输入登录凭据并单击“登录”按钮,然后搜索元素。如果元素被显示,那么它将打印有效的凭证;如果元素没有被显示,那么它将执行一些其他操作,但在单击“登录”按钮后代码不起作用。这里我为它创建了一个方法。
public void toCheckLoginVerification() throws InterruptedException,MalformedURLException {
clickOnSignInbutton();
enterEmailId("s243535@yopmail.com");
enterPassword("Test@123");
clickOnSignInButtonOnSignInScreen(); //code not working after this.
boolean x = driver.findElement(By.xpath("//android.view.View[@content-desc='Trips']")).isDisplayed();
if(x==true) {
System.out.println("Valid Credentials");
} else {
System.out.println("Invalid Credentials");
clearEmailid();
clearPassword();
enterEmailId("s2@yopmail.com");
enterPassword("Test@123");
clickOnSignInButtonOnSignInScreen();
clickOnProfileButtonOnHomeScreen();
}
}
我在其他类中创建了上述方法,但在这里调用它们。更具体地说,我用的是appium。
3条答案
按热度按时间zynd9foi1#
您正在检查元素是否立即显示。。相反,您应该使用selenium的隐式或显式等待机制
bbmckpt72#
您应该使用显式等待而不是隐式等待。
在代码中,selenium会在元素刚刚创建但尚未完全加载/呈现时找到它。所以当你的
driver.findElement(By.xpath("//android.view.View[@content-desc='Trips']"))
返回仍不显示/可见的元素。而您应该等到元素可见。
因此,您可以使用以下方法:
现在你可以说:
tez616oj3#
如果布尔表达式(条件)为true,则将执行if块中的“statement”。如果布尔表达式为false,则不会执行if块中的语句,它将执行if块之后的其余代码。
读这个