如何在iOS Appium上按“OK”进行位置弹出

时间:2018-06-13 17:03:07

标签: python ios mobile automation appium

我正在尝试自动化我的移动网络应用。每次加载时,都会询问“___想要使用您的位置”。用户可以点击“不允许”或“确定”。

我正在使用self.driver.switch_to.alert.accept(),但它接受默认值,即“不允许”。我怎样才能接受“OK”而不是“不允许”?

4 个答案:

答案 0 :(得分:1)

该方法目前对我也不起作用。

您是否尝试通过Appium Inspector定位“确定”按钮? 对于位置以及我在iOS上的这两项工作(xpath或可访问性ID),我都有相同的弹出窗口。

类似的东西:

allow_access_to_location_ios = (MobileBy.ACCESSIBILITY_ID, 'OK')

allow_access_to_location_ios = (MobileBy.XPATH, '//XCUIElementTypeButton[@name="OK"]')

然后调用方法:

self.wait_for_and_accept_alert(*self.allow_access_to_location_ios)

and方法将等待元素15秒钟,如果找到该元素,请单击该元素,否则将显示错误消息:

def wait_for_and_accept_alert(self, *locator):
    try:
        WebDriverWait(self.driver, 15).until(lambda s: self.driver.find_element(*locator))
        self.driver.find_element(*locator).click()
    except TimeoutException:
        print('Unable to find element')

答案 1 :(得分:0)

我了解到您正在要求设备位置警报。您可以识别并使用OK的Xpath按钮单击。我已使用以下代码(在Java中)来使警报出现在应用程序中。

driver.findElement(By.xpath(“ // UIAApplication [1] / UIAWindow [7] / UIAAlert [1] / UIACollectionView [1] / UIACollectionCell [1] / UIAButton [1]”))。click() ;

答案 2 :(得分:0)

  1. 为接受系统警报创建方法:

    def accept_notification_alert(self):
    print('Accept alert')
    try:
        self.driver.switch_to.alert.accept()
    except WebDriverException:
        print('Webdriver error: %s' % WebDriverException.msg)
    
  2. 要消除系统警报,您可以创建方法:

    def dismiss_notification_alert(self):
    print('Dismiss alert')
    try:
        self.driver.switch_to.alert.dismiss()
    except WebDriverException:
        print('Webdriver error: %s' % WebDriverException.msg)
    

答案 3 :(得分:0)

如果默认方法(switch_to.alert.accept())不起作用,则可以尝试mobile gestures

driver.execute_script('mobile: alert', {'action': 'accept', 'buttonLabel': <your button label here>});