测试过程中遇到两类弹窗:

系统权限弹窗
具体业务弹窗
系统权限弹窗
Android
系统权限弹窗一般出现在安装 app 后首次打开,如:定位权限、电话权限等。我们可以按顺序执行测试用例,将该类操作放到 InitTest 中执行,第一个执行。
以 appium + testng 为例:
testng.xml,preserve-order="true"即可

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" parallel="false">
<test name="test" preserve-order="true">
<classes>
<class name="com.qa.test.InitTest"/>
<class name="com.qa.test.BannerTest"/>
<class name="com.qa.test.HomeListTest"/>
</classes>
</test>
</suite>

DriverUtil.java

keepClickElement 方法中循环点击处理权限数量不确定的情况,如图,组团来了3个权限。
匹配控件时,建议使用 textMatches 正则,可以很好得解决不同系统权限控件差异性问题,小米的叫“允许”,华为的叫“始终允许”,不知道其他系统还有啥叫法,目前这个 UiSelector 能 cover 住 new MobileBy.ByAndroidUIAutomator("new UiSelector().className(\"android.widget.Button\").textMatches(\".*允许.*\")")。

public class DriverUtil {
/**
* 持续点击控件
*
* @param driver
* @param by
*/
public static void keepClickElement(AppiumDriver driver, By by) {
try {
WebElement element = driver.findElement(by);
while (true) {
if (element.isDisplayed()) {
element.click();
} else {
break;
}
}
} catch (NoSuchElementException e) {
Logger.debug("未找到该控件: " + by);
}
} /**
* 出现阻塞步骤的系统弹窗时,accept 继续
*
* @param driver
*/
public static void acceptPermission(AppiumDriver driver) {
clickElement(driver, new MobileBy.ByAndroidUIAutomator("new UiSelector().className(\"android.widget.Button\").textMatches(\".*允许.*\")"));
} }

InitTest.java

public class InitTest extends TestCase {
@Test
public void init() {
Logger.info("关闭系统弹窗");
DriverUtil.acceptPermission(driver);
Logger.info("关闭门店选择弹窗");
String poiByString = "new UiSelector().resourceId(\"com.meituan.retail.c.android:id/rv_poi_addresses\").childSelector(new UiSelector().textMatches(\".*测试.*\"))";
DriverUtil.clickElement(driver, new MobileBy.ByAndroidUIAutomator(poiByString));
}
}

iOS
iOS 直接在 Capability 中设置 autoAcceptAlerts 为 true 即可
参考:Appium 服务器初始化参数(Capability)

具体业务弹窗
具体业务弹窗与系统权限弹窗处理方法基本一致,遇到具体问题我们再讨论。

appium 弹窗处理的更多相关文章

  1. appium -- 页面出现弹窗,关闭后,无法识别页面元素(转)

    原文:https://www.cnblogs.com/leavescy/p/9733001.html; 1. 问题:如图所示:在修改手势密码的过程中,点击了返回按钮后,弹出该弹窗:点击继续设置后,就发 ...

  2. appium -- 页面出现弹窗,关闭后,无法识别页面元素

    1. 问题:如图所示:在修改手势密码的过程中,点击了返回按钮后,弹出该弹窗:点击继续设置后,就发现 driver.getPageSource()获取不到页面元素.在找了一圈无用的资料后,没有什么好的处 ...

  3. appium+python自动化47-首次打开app权限弹窗问题

    前言 用真机运行appium代码,首次打开app有的手机会出现权限弹窗问题,一般这种弹窗都是在引导页前面或者引导页后面出现.权限弹窗上面的按钮都是固定的, 只需要定位到"始终允许" ...

  4. Appium + python -always_allows弹窗

    from appium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.web ...

  5. Appium UiWatchers 监听解决各种非期待弹窗,弹层,弹弹弹等问题

    app自动化时,各种不期待的弹层弹窗,升级广告等时有飞出,由于弹窗具有不定时,不定页面等很多不确定性.有的弹窗很不友好,不×掉,很难进行下一步操作,造成 测试用例失败.而判断是否有弹窗,弹层很麻烦.研 ...

  6. MacOS10.9平台配置Appium+Java环境

    1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html   ...

  7. Windows平台配置Appium+Java环境

    1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 ...

  8. 转:Windows平台配置Appium+Java环境

    1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 ...

  9. Appium基于Python unittest自动化测试 & 自动化测试框架 -- PO并生成html测试报告

    基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...

随机推荐

  1. websocket简单样例

    服务端 var server = require('ws').Server; }); serv.on('connection',function(socket){ socket.send('hello ...

  2. OI歌曲汇总

    在学习的间隙,我们广大的OIer创作了许多广为人知的歌曲 这里来个总结 (持续更新ing......) Lemon OI 葛平 Lemon OI chen_zhe Lemon OI kkksc03 膜 ...

  3. 2019.12.10 定义数组及java内存划分

    //数据类型[ ] 数组名 = new 数据类型[元素个数或数组长度]; int[] x = new int[100]; //类型[] 数组名 = new 类型[]{元素,元素,……}; String ...

  4. nexus 3.17.0 简单说明

    nexus 在6.24 发布了3.17.0 ,同时包含了好多新的特性 以下为一些主要变动: routing rules 可以增强repo 的安全 apt repo 格式的支持 可以方便的为ubuntu ...

  5. facl

    file access control lists 文件的额外赋权机制,针对性的对某用户对文件的权限进行处理 setfacl 指定空权限

  6. CSS行内块元素(内联元素)

    一.典型代表 input img 二.特点: 在一行上显示 可以设置宽高 <style type="text/css"> img{ width: 300px; /* 顶 ...

  7. 1-ESP8266 SDK开发基础入门篇--开发环境搭建

    因为今天终于做好了自己的另一块工控板,所以我就开始写基础公开篇的内容,希望自己小小的努力能够帮到大家 自己做的另一块板子 https://www.cnblogs.com/yangfengwu/cate ...

  8. 洛谷P1081 开车旅行

    题目 双向链表+倍增+模拟. \(70pts\): 说白了此题的暴力就是细节较多的模拟题. 我们设离\(i\)城市最近的点的位置为\(B[i]\),第二近的位置为\(A[i]\).设\(A\)或\(B ...

  9. Spark-Streaming hdfs count 案例

    Streaming hdfs count 需要先启动 hadoop 集群. # 启动 hadoop 集群 start-dfs.sh start-yarn.sh # 查看是否启动成功 # 命令 jps ...

  10. Clouds Classification from Sentinel-2 Imagery with Deep Residual Learning and Semantic Image Segmentation

    哨兵2号云检测的语义分割,提出了CloudNet,不使用池化和上采样操作,从头到尾保持原图大小,中间每个块使用ASPP和残差连接,网络结构如下 比较了CNN, FCN, DeeplabV3+,效果都没 ...