Appium 应用程序检测警报对话框

Appium 应用程序检测警报对话框,appium,Appium,我正在用Python编写一个UI测试脚本,在执行单击之后,可能会弹出一个警报窗口。如果是这样,我需要按下窗口上的按钮。我想知道是否有办法在Appium API中检测警报对话框?谢谢 将指针放在“是”和“否”按钮上,如果它们有单独的ID,您将获得它们的ID。然后使用 self.driver.find_element_by_id('id of the button').click() 如果他们没有ID,则使用 self.driver.find_element_by_name('OK').click

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


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

self.driver.find_element_by_id('id of the button').click()
如果他们没有ID,则使用

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

简单而最好的方法是通过功能来实现

capabilities.setCapability("autoAcceptAlerts",true);

这将只接受应用程序发出的警报,而不接受系统警报。

我认为这与问题无关,但我希望这会给你一个线索

您可以使用XPATH来定位元素。嗯,这种方法实际上并不被推荐。但是,如果元素没有任何ID、可访问性名称、名称或标签,这可能很有用。其中信息仅为类和值

例如,您可以这样做:
//android.widget.Button[包含(@text,'OK')]

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

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

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

请与该页面的定位器共享该对话框。那就只有我能说了anything@Gaurav我刚刚添加了一个屏幕截图。如果那是你想要的,请告诉我。非常感谢。似乎没有定位器可用于“是”和“否”按钮。你能试着用UIAutomator找到这个对话框的定位器吗?@Gaurav是的,我能找到。我只是没有在图像中显示它们。太好了!!现在,您可以使用这些定位器执行任何操作。