@Findbyアノテーションを使用しているときにそのような要素例外を取得し、Driver.FindElementを使用したときにうまく機能します(by.id()) -- java フィールド と appium フィールド と appium-android フィールド と pageobjects フィールド 関連 問題

Getting no such element exception when I am using @FindBy annotation, working fine when I used driver.findelement(By.id())












0
vote

問題

日本語

私はAppiumでJavaを使用しています。 私は2つの方法でコードを実行しました。 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); }

2番目 - POMを使用している場合、

ページクラス:

<事前> <コード> @FindBy(id = "pinEntryViewVerifyCode") private MobileElement sms_VerificationCode;

TestClass

<事前> <コード> 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(500ミリ秒の間隔で1秒間試行) org.openqa.selenium.sup.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)

英語

I am using java with appium. I executed my code using 2 ways. One -when I am using below code it is working fine.

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);      } 

Second- When I am using POM and its failing

page class:

@FindBy(id = "pinEntryViewVerifyCode") private MobileElement sms_VerificationCode; 

TestClass

on_BoardingPages.enterSMSVerificationCode("XXXX"); 

Error:

org.openqa.selenium.NoSuchElementException: Can't locate an element by this strategy: By.chained({By.id: pinEntryViewVerifyCode}) at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:126) at io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept(InterceptorOfASingleElement.java:60) --Caused by: org.openqa.selenium.TimeoutException: Expected condition failed: waiting for io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction@56a4479a (tried for 1 second(s) with 500 milliseconds interval) at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:303) at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:271) at io.appium.java_client.pagefactory.AppiumElementLocator.waitFor(AppiumElementLocator.java:99) at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:119)

</div
           

回答リスト

0
 
vote

@FindbyはWebElements POMに対してのみ機能します。 MovioRementsの場合、Android用の @androidfindby をIOS用に使用し、 @ISoxcuitFindby を使用してください。

あなたのコードは次のようになります:

<事前> <コード> @AndroidFindBy(id = "pinEntryViewVerifyCode") private MobileElement sms_VerificationCode;
 

@FindBy will work only for WebElements POM. For MobileElements we should use @AndroidFindBy for android and @iOSXCUITFindBy for iOS.

So your code will look like:

@AndroidFindBy(id = "pinEntryViewVerifyCode") private MobileElement sms_VerificationCode; 
</div
 
 
   
   

関連する質問

1  ページオブジェクトの冗長性を縮小する方法とテストは?  ( How to reduce page object redundancy among pages and tests ) 
SeleniumとTestNGとほぼ2年間働いていましたが、人々はフレームワークの点で異なる提案があるかどうか疑問に思います。私のテストインフラストラクチャで見ている問題のいくつかは、エントリポイントが異なるため、ページオブジェクトクラス(〜1500行のコー...

0  テストクラスの@BEFORETESTメソッドでは、WebDriverオブジェクトがNULLです。  ( The webdriver object is null in the beforetest method in the test class ) 
<コード> Page Object Model + <コード> PageFactory + <コード> @Factory @DataProvider 私は6人のユーザーを実行するために持っていて、同じブラウザインスタンス内の2人のユーザーにログイ...

0  PAGEオブジェクトとCodeCeptjsのカスタムヘルパーのカスタム関数を使用する  ( Using custom functions with i in page object and custom helper in codeceptjs ) 
こんにちはCodeceptjsコミュニティ、 は、 iとして(ステップ_file.jsの下)カスタム定義関数を使用する方法があります。 でcustomfunction()。 私のカスタムヘルパーファイル で、( i.click()のような)ネイティ...

23  すでに見つかったWebElementのLocatorによって取得します  ( Get the by locator of an already found webelement ) 
私がすでに見つけた/識別されたセレンウェブエレメントのロケーターを得るためのエレガントな方法はありますか? 質問についてクリアするには:要素を見つけるために使用されている「By Locator」が欲しいのですが。私はこの場合、、特定の属性またはCSS-lo...

0  WebElementsを繰り返すメソッドを構築し、Selenium&Javaを使用して表示されるものを返す方法は?  ( How to build a method to iterate through webelements and return the one that is ) 
それで、ページは以下の2つの要素のような多くの類似の特性で満たされています。 例: <事前> <コード> <button id="exibe_codigo_de_barras_210888-1" data-context="minhas-contas_cont...

1  UIオートメーションのページオブジェクトの設計実装  ( Design implementation for page objects in ui automation ) 
私は過去数週間にわたってこのUI自動化の設計に苦労しています。ページオブジェクトを使用して、ウィジェットベースのUIオートメーションのために思い付いたものは、抜け出し、管理不可能な非常に迅速に抜け出すことになる非常に面倒なアイデアのように聞こえます。 私はこ...

4  ImportError:Baseという名前のモジュールなし  ( Importerror no module named base ) 
私の最初のログインテストのためのPageObjectパターンを実装しようとしています。実行中に次のエラーが発生しています。 <事前> <コード> >> py.test -v test_login.py ============================...

0  Seleniumからレコードを挿入しようとすると、Excelで正しく設定されていない値  ( Values not being set properly in excel when trying to insert records from seleni ) 
userid、パスワード&アンプを保存しようとしています。 Seleniumを使用してExcelファイルに自動化しようとしているWebサイトに渡されているemailID。 問題は、生成されているExcelファイルがUserIDを2回保存しているため、他の2つ...

1  私の救助ブロックが機能していないのはなぜですか?  ( Why is my rescue block not working ) 
Selenium WebDriverを使用して、テスト失敗を報告する前にページオブジェクトを複数回調べることを試みています。私の問題は、私の始めの救助ブロックによって捕捉されていないエラーを得ることです。 これがエラーです Selenium :: WebD...

0  SeleniumとJavaの@Findbyでリフレッシュされた要素  ( Element refreshing in findby with selenium and java ) 
私達は拡張または折りたたまれた要素を持つHTMLコードを持っています(現在のものに応じて)。それらは1つのレベルだけで拡張することができます。このようなものです。 <事前> <コード> <a href = "#" title = "Expand" id = ....




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有