2016-09-19 14 views
3

私はappiumを使ってアンドロイドアプリをテストする自動テストを作成しています。私が今直面している問題は、チェックボックスにリンクテキストが含まれているため、チェックボックスを選択できないということです。Appium Androidのチェックボックス

私は、チェックボックスの要素を取得し、それをクリックし、次のコードを使用しています - アプリのコードで

WebElement termsAndConditionsCheckbox = (new WebDriverWait(driver, 60)).until(ExpectedConditions.presenceOfElementLocated(By.id(baseTest.getAndroidElementId("checkbox_terms_and_conditions")))); 
termsAndConditionsCheckbox.click(); 

を次のように、チェックボックスのテキストが設定されている -

mCheckboxTermsAndConditions.setText(Html.fromHtml(mSignUpAcceptTermsAndConditions)); 
mCheckboxTermsAndConditions.setMovementMethod(LinkMovementMethod.getInstance()); 

のAndroidデバイス上のオプションをデバッグするから、私はオプションをオンにして、クリックイベントのポインタの位置を確認し、チェックボックス(ボックス+テキスト)の中央でappiumのクリックを確認し、残念ながらそのポイントにリンクテキストが含まれているため、webviewが起動されますチェックボックスを「チェック」する

appiumでカスタムのclick()が表示されないため、チェックボックスをオンにすることができます。

アイデア/助けていただければ幸いです。

+0

こんにちは、uiautomatorviewerを使用して、テキストではなくチェックボックスを見つけて、わかりやすいようにuiautomatorviewerのスクリーンショットを共有してください –

答えて

1

この場合、チェックボックスを直接クリックするのではなく、最初にチェックボックスの位置を取得し、いくつかのピクセルを加算または減算することで位置を調整し、常に正確にチェックボックスをクリックするようにしますチェックボックス要素全体の

あなたは、コードスニペットの下に使用することができます。

WebElement element =driver.findelement(By.xpath("YourXpath")); 
     Point p=element.getLocation(); 
     driver.tap(1, p.getX()+10, p.getY()+10, 1); 
2

あなたは要素By.className代わりのBy.idを見つけることができます。

このように複数の要素の場合、インデックス(この場合は0)で参照できるようにすることができます。

WebElement submit = (WebElement) driver.findElements(By.className(RADIO_BUTTON)).get(0); 
submit.click(); 

これが役立ちます。

関連する問題