appium 弹窗处理
测试过程中遇到两类弹窗:
系统权限弹窗
具体业务弹窗
系统权限弹窗
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 弹窗处理的更多相关文章
- appium -- 页面出现弹窗,关闭后,无法识别页面元素(转)
原文:https://www.cnblogs.com/leavescy/p/9733001.html; 1. 问题:如图所示:在修改手势密码的过程中,点击了返回按钮后,弹出该弹窗:点击继续设置后,就发 ...
- appium -- 页面出现弹窗,关闭后,无法识别页面元素
1. 问题:如图所示:在修改手势密码的过程中,点击了返回按钮后,弹出该弹窗:点击继续设置后,就发现 driver.getPageSource()获取不到页面元素.在找了一圈无用的资料后,没有什么好的处 ...
- appium+python自动化47-首次打开app权限弹窗问题
前言 用真机运行appium代码,首次打开app有的手机会出现权限弹窗问题,一般这种弹窗都是在引导页前面或者引导页后面出现.权限弹窗上面的按钮都是固定的, 只需要定位到"始终允许" ...
- Appium + python -always_allows弹窗
from appium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.web ...
- Appium UiWatchers 监听解决各种非期待弹窗,弹层,弹弹弹等问题
app自动化时,各种不期待的弹层弹窗,升级广告等时有飞出,由于弹窗具有不定时,不定页面等很多不确定性.有的弹窗很不友好,不×掉,很难进行下一步操作,造成 测试用例失败.而判断是否有弹窗,弹层很麻烦.研 ...
- MacOS10.9平台配置Appium+Java环境
1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- Windows平台配置Appium+Java环境
1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 ...
- 转:Windows平台配置Appium+Java环境
1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 ...
- Appium基于Python unittest自动化测试 & 自动化测试框架 -- PO并生成html测试报告
基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...
随机推荐
- 浏览器 Web Storage - sessionStorage & localStorage
storage事件 当储存的数据发生变化时,会触发storage事件.我们可以指定这个事件的回调函数. window.addEventListener("storage",onSt ...
- msdtc不可用
在使用“经销商园地 网上订单处理程序”等程序时,如果程序报:服务器×××上的MSDTC不可用”,可以按照以下方法进行解决: 在windows控制面版-->管理工具-->服务-->Di ...
- vue组件通信方式(多种方案)
一.Props传递数据 components |-Grandson1.vue //孙子1 |-Grandson2.vue //孙子2 |-Parent.vue //父亲 |-Grandson1.vue ...
- 阿里巴巴编程规约--digest
所谓卫语句,如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回.这样的单独检查常常被称为“卫语句”. 微服务之间将DTO,Req放到一个单独的项目中,相关的项目都依赖这个底层 ...
- java 练习(公司年销售额求和)
/*B:公司年销售额求和 某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99 */ int ...
- Chocolatey 方便的windows 包管理工具
windows 在包管理上一般大家都是网上下载二进制文件或者就是通过软件管家进行安装,这些对于开发人员可能就有点不是 很专业了, Chocolatey 是一个不错的windows 软件包管理工具 安装 ...
- PDE工具箱的简单使用
转载自Here matlab的PDE工具箱的简单使用 问题选择 边界条件选择 菜单按钮和简单使用 命令行输入pdetool,打开GUI编辑界面如下: 注意到工具栏上,就是我们要用到的,从左到右依次使用 ...
- MSSQL手工注入 报错注入方法
例子:www.kfgtfcj.gov.cn/lzygg/Zixun_show.aspx?id=1[1]首先爆版本:http://www.kfgtfcj.gov.cn/lzygg/Zixun_show. ...
- 虚拟机,安装tools时出现“安装程序无法继续解决
报错:虚拟机安装了win10,安装tools时出现“安装程序无法继续.Microsoft Runtime DLL安装程序未能安装” 解决步骤: 双击安装程序,在它报以上错时不要点确定 这个时候按下窗口 ...
- Git bash Error: Could not fork child process: There are no available terminals (-1)
错误信息:Error: Could not fork child process: There are no available terminals (-1) 截图如下: 解决办法: (1)使用cmd ...