Używam Java z appium. Wykonałem swój kod na 2 sposoby. Jeden - gdy używam poniższego kodu, działa dobrze.
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);
}
Po drugie - kiedy używam POM i jego niepowodzenie
Klasa strony:
@FindBy(id = "pinEntryViewVerifyCode")
private MobileElement sms_VerificationCode;
TestClass
on_BoardingPages.enterSMSVerificationCode("XXXX");
Błąd:
org.openqa.selenium.NoSuchElementException: Nie można zlokalizować elementu za pomocą tej strategii: By.chained ({By.id: pinEntryViewVerifyCode}) w io.appium.java_client.pagefactory.AppiumElementLocator.findElement (AppiumElementLocator ).java: io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept (InterceptorOfASingleElement.java:60) - Spowodowane przez: org.openqa.selenium.TimeoutException: Oczekiwany warunek nie powiódł się: oczekiwanie na io.appium.java_client.pagefementFactory.App @ 56a4479a (próbowano przez 1 sekundę z interwałem 500 milisekund) na org.openqa.selenium.support.ui.FluentWait.timeoutException (FluentWait.java:303) na org.openqa.selenium.support.ui.FluentWait.until (FluentWait.java:271) pod adresem io.appium.java_client.pagefactory.AppiumElementLocator.waitFor (AppiumElementLocator.java:99) pod adresem io.appium.java_client.pagefactory.AppiumElementLocator.findElement (AppiumElementLocator.java:99)
1 odpowiedź
@FindBy będzie działać tylko dla WebElements POM. W przypadku MobileElements powinniśmy używać @AndroidFindBy dla Androida i @iOSXCUITFindBy dla iOS.
Twój kod będzie więc wyglądał następująco:
@AndroidFindBy(id = "pinEntryViewVerifyCode")
private MobileElement sms_VerificationCode;
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].
(alt + f8)
, aby sprawdzić, czydriver.findElement(MobileBy.id("pinEntryViewVerifyCode"));
będzie działać