2017-09-04 14 views
0

私は、ドロップダウン値の要素がuiautomatorviewerに表示されないという問題に直面しています。appiumでフォーカスされている要素をタップする方法。 appiumのドロップダウンリストの値を選択できません

私は、画面のgetPageSource、そこにも何の価値がモバイルアプリの画面に示す結果で露出していないされていていることにより、XMLのDOMをチェックしていますが

XMLスニペットは以下の通りです: -

<android.widget.FrameLayout index="0" text="" class="android.widget.FrameLayout" package="com.demo.pass" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,145][540,196]" resource-id="com.demo.pass:id/frameSearchLocation" instance="6"> 
    <android.widget.EditText index="0" text="Bryson City" class="android.widget.EditText" package="com.demo.pass" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[30,145][510,196]" resource-id="com.demo.pass:id/autoCompleteSearchTextView" instance="0" /> 
    <android.widget.ImageView NAF="true" index="1" text="" class="android.widget.ImageView" package="com.demo.pass" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[457,148][502,193]" resource-id="com.demo.pass:id/imgCurrentLocation" instance="0" /> 
</android.widget.FrameLayout> 

もう一つの考えでは、私はキーボード操作を試みました。次のコードを使用して値に移動できます。

ad.pressKeyCode(20); 

ただし、値をタップできません。私は大部分を試しました。以下のように: -

ad.pressKeyCode(66); // Press Enter 

そして

TouchAction action = new TouchAction(ad); 
action.perform(); 

ドロップダウン値のためのDOMにはロケータが存在しないとして

が、私は上記のコードの要素を渡すことはできません。

私はまた、コードの下に使用して切り替えることを試みた名前がフレームとして存在するので: -

ad.switchTo().frame(ad.findElement(By.xpath("com.demo.pass:id/frameSearchLocation"))); 

uiautomatorviewer画面: -

enter image description here

私はそのような場合に何をすべきかを提案してください。 すべての解決策/提案をいただければ幸いです。

+0

これはハイブリッドアプリですか?その場合はおそらくswitchingContextが要素を見つけるのに役立ちます。 http://appium.io/slate/en/master/?java#automating-hybrid-apps – nullpointer

+0

nupそれはJavaのアンドロイドでビルドされています.. –

+0

あなたがアクセスしているコンテキストは、その外観から完全にネイティブではないようです。この画面では、contextHandlesを取得して、appiumによってすべてがリストされているかどうかを調べることができますか?利用可能なコンテクストのより良い証拠を提供し、スイッチが必要であるか否かを証明する。 – nullpointer

答えて

-1

 By filter =By.xpath("MYLOCATOR"); 
     System.out.println("About to click on result"); 
     Point point = ad.findElement(filter).getLocation(); 
     int elementCenterX = point.getX() + 80; 
     int elementCenterY = point.getY() + 100; 
     System.out.println("value of x = "+elementCenterX+" value of y = "+elementCenterY); 
     ad.tap(2, elementCenterX , elementCenterY , 0); 

注: - あなたは上記のコードでは、あなたの要件ごとにXとYを調整し、ドロップダウンのテキストボックスなどの最寄りのロケータを渡す必要があります。

希望するもの:

1

これは既知の問題です。私は過去2年間、Android Appのテスト自動化を行ってきました。私は何回も同じ問題に遭遇しました。残念ながら、uiAutomatorはこれらの要素を検出しないため、そのような要素に対しては何も実行できません。

Appiumは内部的にuiAutomatorにコマンドを送信し、uiAutomatarはデバイス上でアクションを実行します。 uiAutomatorは、これらの要素が表示された場合にアクションを実行できます。

TouchAction/java script/pagesourceやxPathの使用にはあまり時間を費やさないことをお勧めします。私はすでにホースソリューションを試していますが、どれも機能していないためです。

ただし、要素が毎回同じ場所に存在する場合は、座標を使用して要素をクリックすることができます(ドロップダウン内の要素が変化し続ける場合は推奨されません)。私にとって

コードワークの下
+0

Thanks Vinod。私は既に座標を使って行っていますが、コーディネーターではリレーできないので、より堅牢な代替案を探しています。ドロップダウンの存在を確認できないため、起動時に自動化がより危険になります偽の失敗をポップアップする –

+0

Googleが新しいバージョンのUiAutomatorをリリースすれば、新しいバージョンで確認できます。今のところ、これらの要素を検出する方法はありません。 – Vinod

関連する問題