Java 当我使用@FindBy注释时,没有得到这样的元素异常,当我使用driver.findelement(By.id())时,工作正常

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

我将java与appium一起使用。 我用两种方式执行代码。 One-当我使用下面的代码时,它工作正常。

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;