当前位置: 首页 > 知识库问答 >
问题:

在Appium Java中,如何单击没有可单击:true状态的按钮?

许嘉福
2023-03-14

我正在为一个应用程序编写测试,我没有访问源代码的权限,我身边的人也没有。在某个时刻,我插入登录/密码信息,登录按钮变为绿色,我可以点击它。但是,我无法自动执行该操作,因为即使我可以点击屏幕上的按钮,其“clickable”属性仍然为假,除了“enabled”属性之外的所有其他属性都为假,即使按钮无法点击,该属性也始终为真。UIAutomatorViewer上节点详细信息的屏幕截图

我唯一能想到的就是在它变成绿色时单击它,但我不知道如何实现它,我认为这不是一个非常优雅的解决方案。非常感谢您的帮助,在完成这部分之前,我无法进行其他测试。

我正在使用UI Automator Viewer来查看按钮的不同状态,并使用WebDriverWAT/Exected条件来等待按钮可用。即使它从来没有启用'clickable'属性,我也尝试使用elementToBeClickable和visibilityOfElement定位,但没有成功。

这就是我现在的处境。

public void waitAndClick(String local) {
        WebDriverWait wait = new WebDriverWait(getDriver(), 20);
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath(local)));
        getDriver().findElement(By.xpath(local)).click();
}

谢谢你!

共有1个答案

卞经业
2023-03-14

您可以获取元素位置,然后按坐标点击:

List<MobileElement> element = (MobileElement) getDriver().findElement(By.xpath(local));
Point location = element.getLocation();
ITouchAction action = new TouchAction(getDriver());
action.tap(location.x, location.y).perform();
 类似资料:
  • 问题内容: 以下是HTML。 以下是Javscript 还有一些CSS 我要的是单击适当的按钮后,将Board组件的大小调整为适当的大小。 我已经尝试过这样 但这是行不通的。 问题答案: 您不能像这样设置React组件的状态。并且组件应负责设置自己的状态。 在您的Board组件内部,在componentDidMount中设置事件侦听器。最好的解决方案是让按钮成为React应用程序的一部分,但这超出

  • 编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,

  • 我正在使用硒网络驱动程序与python来浏览网站,我无法弄清楚如何选择这个按钮。 按钮被一个类包围,但在该类中有两个按钮。我试过使用 没有明显的id,所以我被卡住了,如果这是琐碎的,我道歉。我如何点击这个按钮?

  • 问题内容: 我无法相信这行不通。 我有一个JList。我将其渲染器设置如下。基本上是一个带有两个标签和一个按钮的JPanel。 这是我的TopBottomCellRenderer。 该列表可正确呈现,但不可单击。单击它没有任何作用。 我该如何工作? 问题答案: 渲染器只是在组件上绘制的“橡皮图章”。它们不是实时的交互式组件。 请参阅以下答案:JList中的JButton以获得一种可能的解决方案。实

  • 在我的编程课上的一个个人项目中,我遇到了一个我没想到会遇到的问题。当点击菜单按钮项时,我想在窗格中显示一个3D形状,我在互联网上搜索了50-100种不同的方法(或者很好的粗略估计),但没有找到任何东西。我一直困惑于如何在单击菜单项时显示3D形状,以下是我的源代码(fxml):