我正在尝试自动化我的移动网络应用。每次加载时,都会询问“___想要使用您的位置”。用户可以点击“不允许”或“确定”。
我正在使用self.driver.switch_to.alert.accept()
,但它接受默认值,即“不允许”。我怎样才能接受“OK”而不是“不允许”?
答案 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)
为接受系统警报创建方法:
def accept_notification_alert(self):
print('Accept alert')
try:
self.driver.switch_to.alert.accept()
except WebDriverException:
print('Webdriver error: %s' % WebDriverException.msg)
要消除系统警报,您可以创建方法:
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>});