【问题标题】:Appium Detect AlertdialogAppium 检测警报对话框
【发布时间】:2015-12-16 01:34:54
【问题描述】:

我正在用 Python 编写 UI 测试脚本,执行点击后,可能会弹出一个警告窗口。如果是这样,我需要按下该窗口上的按钮。我想知道是否有办法检测 Appium API 中的警报对话框?谢谢。

【问题讨论】:

  • 请与该页面的定位器共享该对话框。那只有我可以说什么了
  • @Gaurav 我刚刚添加了一个屏幕截图。让我知道这是否是您想要的。非常感谢。
  • 似乎没有可用于“是”和“否”按钮的定位器。您可以尝试使用 UIAutomator 来查找此对话框的定位器吗?
  • @Gaurav 是的,我可以找到他们。我只是没有在图片中显示它们。
  • 太棒了!现在您可以使用这些定位器执行任何操作。

标签: appium


【解决方案1】:

简单和最好的方法是通过能力来做

capabilities.setCapability("autoAcceptAlerts",true);

这将只接受来自您的应用程序的警报,而不是系统警报。

【讨论】:

    【解决方案2】:

    将指针放在是,否按钮上,如果他们有单独的 ID,您将获得他们的 ID。然后使用

    self.driver.find_element_by_id('id of the button').click()
    

    如果他们没有 ID,则使用

    self.driver.find_element_by_name('OK').click()
    

    【讨论】:

      【解决方案3】:

      我认为这与问题有点无关,但我希望这能给你一个线索。

      您可以使用 XPATH 来定位元素。好吧,这种方法真的不推荐。但如果元素没有任何 ID、可访问性名称、名称或标签,这可能很有用。其中信息只是类别和价值。

      例如,您可以执行以下操作: //android.widget.Button[contains(@text,'OK')]

      我不确定 android 上的警报对话框的类名。但这是我在遇到 iOS 自动化问题时的方法,例如我的应用程序有自定义警报,带有 3 个按钮(所有这些都是自定义的)、按钮打开、关闭和报告:

      //UIAAlert[*]//UIAButton[@name='Report']
      

      您可以使用相同的方法来定位任何通过正常方法无法定位的元素。

      【讨论】:

        猜你喜欢
        • 2014-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-27
        • 2015-06-26
        • 2011-12-25
        相关资源
        最近更新 更多