我正在使用 Appium 使用 Java 来自动化 native iOS 和 Android 应用程序。 该应用程序具有登录/注销过程,我在每个测试用例的开始/结束时执行该过程,并且在登录应用程序时,除了我可以在那里执行的所有操作之外,还有许多随机弹出窗口“速率” us”系统,启用通知、位置使用等等。 问题是,其中一些弹出窗口被编码为以不同的间隔出现,甚至在随机时间出现,所以我现在要做的就是等待在登录后的每个案例开始时关闭它们(这需要很多时间以显示所有弹出窗口)。
有没有办法在整个案例中等待弹出窗口出现,然后在执行其他步骤时将其关闭,或者是在执行案例其余部分之前关闭所有弹出窗口的唯一解决方法?
最佳答案
我们遇到过类似的问题,到目前为止我们找到的最佳解决方案是实现弹出窗口和测试,以便应用程序的行为在测试情况下始终保持一致。然而,即使没有实际的内置支持,我们也成功地使用了以下变体。这是在 python/伪代码中,但我认为它在 Java 中应该没有太大区别。
在这里您可以处理您想要的元素,除非找不到它,在这种情况下我们假设它上面有弹出窗口。我们首先处理弹出窗口,最后应该找到我们需要的元素。
def handle_element_x(self, timeout):
"""handles element x unless there are popups overlapping it.
"""
while elapsed_time < timeout:
if appium._is_element_present(element_x_locator):
// handle element x and return
return True
if appium._is_element_present(popup1_locator):
// handle popup1
continue
if appium._is_element_present(popup2_locator):
// handle popup2
continue
...
time.sleep(1)
自然地,您需要使用所有可以与某些弹出窗口重叠的元素来实现它。
关于java - 在 native 应用程序中使用 Appium 处理弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36687907/