【问题标题】:Appium Android click checkboxAppium Android 点击复选框
【发布时间】:2016-09-19 13:57:59
【问题描述】:

我正在使用 appium 创建自动化测试来测试 Android 应用。我现在面临的问题是我无法选择复选框,因为该复选框包含链接文本。

我正在使用以下代码获取复选框元素并单击它 -

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

在app代码中,复选框的文字设置如下——

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

从 android 设备上的调试选项中,我打开了选项以查看单击事件的指针位置,我看到 appium 在复选框(框 + 文本)的中心单击,不幸的是,该点包含一个链接文本,所以 webview 被启动,而不是“检查”复选框

我在 appium 中没有看到自定义 click(),这可以让我选中复选框。

将不胜感激任何想法/帮助。

【问题讨论】:

  • 您好,使用uiautomatorviewer只能找到复选框而不是文本,请分享uiautomatorviewer的屏幕截图,以便我们更好地理解

标签: android appium


【解决方案1】:

您可以使用查找元素By.className 代替By.id

例如,对于多个此类元素,您可以使用索引(在本例中为 0)引用它们。

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

希望这会有所帮助。

【讨论】:

  • 我可以找到它并 getAttributes 但从未执行过点击。
【解决方案2】:

在这种情况下,而不是直接点击复选框..首先获取复选框的位置并通过添加/减去一些像素来调整位置,以便它始终点击复选框而不是中心整个复选框元素。

您可以使用以下代码 sn-p :

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

【讨论】:

  • 好的,经过反复试验,我确实设法让这种方法工作,使用 getX()+5 和 getY()+5。但是,我认为如果可能的话,最好让编写 UI 的人将链接和文本放在单独的视图中。我过去发现在与复选框相同的视图中链接文本时存在其他选择问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多