2016-09-19 85 views
3

我創建使用appium測試Android應用自動化測試。我現在面臨的問題是我無法選擇複選框,因爲複選框包含鏈接的文本。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自定義點擊(),這將讓我選中複選框。

希望得到任何想法/幫助。

+0

喜用uiautomatorviewer找到複選框不僅沒有文字和請分享uiautomatorviewer的屏幕截圖,以便我們能夠更好地理解 –

回答

1

在這種情況下,而不是點擊複選框directly..first獲取複選框的位置,並通過加/減一些像素調整位置,使其始終在準確點擊複選框,而不是在中心整個複選框元素。

您可以使用下面的代碼片段:

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

希望這有助於。