我正在使用Appium使用Java自动化原生iOS和Android应用程序。 该应用程序具有登录/注销过程,我在每个测试用例的开始/结束时执行,并且在登录应用程序时,除了我可以在那里执行的所有操作之外,还有许多随机弹出窗口用于&# 34;评价我们"系统,启用通知,地点使用等等。 问题是这些弹出窗口中的一些被编码为即使在随机时间也以不同的间隔出现,所以我现在正在做的是等待在登录后的每个案例的开头解雇它们(这需要花费很多时间)所有弹出窗口都出现了。)
有没有办法在整个案例中等待弹出窗口出现然后被解雇,同时执行其他步骤,或者是在执行其余案例之前解除所有弹出窗口的唯一解决方法?
答案 0 :(得分:1)
我们遇到了类似的问题,到目前为止我们找到的最佳解决方案是实现弹出窗口和测试,以便应用程序的行为在测试情况下始终保持一致。但是,即使没有实际的内置支持,我们也成功地使用了以下变体。这是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)
当然,您需要使用可以与某些弹出窗口重叠的所有元素来实现此功能。