Java 当我使用@FindBy注释时,没有得到这样的元素异常,当我使用driver.findelement(By.id())时,工作正常
我将java与appium一起使用。 我用两种方式执行代码。 One-当我使用下面的代码时,它工作正常。Java 当我使用@FindBy注释时,没有得到这样的元素异常,当我使用driver.findelement(By.id())时,工作正常,java,appium,appium-android,pageobjects,Java,Appium,Appium Android,Pageobjects,我将java与appium一起使用。 我用两种方式执行代码。 One-当我使用下面的代码时,它工作正常。 public class On_BoardingPages MobileElement smsField = driver.findElement(By.id("pinEntryViewVerifyCode")); smsField.sendKeys("XXXX"); public On_BoardingPages(AppiumDriver<MobileE
public class On_BoardingPages
MobileElement smsField = driver.findElement(By.id("pinEntryViewVerifyCode"));
smsField.sendKeys("XXXX");
public On_BoardingPages(AppiumDriver<MobileElement> driver) {
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}
public void enterSMSVerificationCode(String codeVerification) {
sms_VerificationCode.sendKeys(codeVerification);
}
测试类
on_BoardingPages.enterSMSVerificationCode("XXXX");
错误:
org.openqa.selenium.NoSuchElementException:无法通过以下策略定位元素:by.chained({by.id:pinEntryViewVerifyCode})
在io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:126)
在io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept(InterceptorOfASingleElement.java:60)
--原因:org.openqa.selenium.TimeoutException:预期条件失败:正在等待io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction@56a4479a(尝试1秒,间隔500毫秒)
位于org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:303)
位于org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:271)
在io.appium.java_client.pagefactory.AppiumElementLocator.waitFor(AppiumElementLocator.java:99)
在io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:119)
@FindBy将仅适用于WebElements POM。对于移动设备,我们应该为android使用@AndroidFindBy,为iOS使用@iosxguitfindby 因此,您的代码将如下所示:
@AndroidFindBy(id = "pinEntryViewVerifyCode")
private MobileElement sms_VerificationCode;
您还可以在测试失败的地方设置断点,并使用“Evaluate Expression”命令
(alt+f8)
检查是否driver.findElement(MobileBy.id(“pinEntryViewVerifyCode”)
将起作用是的,它与find by一起起作用,但我使用了@androidFindBy,因为它是一个android元素。问题是在这里等待
@AndroidFindBy(id = "pinEntryViewVerifyCode")
private MobileElement sms_VerificationCode;