2016-09-19 83 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(); 

希望这有助于。