51Testing软件测试论坛

标题: Hybird APP测试系列一:Alert 的判断 [打印本页]

作者: qh988629    时间: 2015-10-20 12:52
标题: Hybird APP测试系列一:Alert 的判断
本帖最后由 qh988629 于 2015-10-20 12:54 编辑

hybrid app

Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势

对于这类应用的测试可能和平常的native app 以及web app 不同。楼主刚开始测试时,比如在app 的webview 界面点击某些button会弹出alert,而此时用findelement等方法一直无法找到,最后goggle才得以解决

解决办法如下:
public class demo {

        public static AppiumDriver commonInit() throws MalformedURLException {
                AppiumDriver driver;
                // 使用phonegap打包的hybrid app路径
                String apppath ="F:\\XXXX.apk";
                // setup AppniumDriver
                DesiredCapabilities capabilities = new DesiredCapabilities();
                capabilities.setCapability("deviceName", "XXXX");// 真机测试android设备
//                capabilities.setCapability("udid", "XXXX");
                capabilities.setCapability("platformVersion", "5.0.1");// 真机android版本为4.2.2
                capabilities.setCapability("platformName", "Android");// 真机为android系统
                capabilities.setCapability("app", apppath);// 被测app apk包的位置
                capabilities.setCapability("appPackage","com.xxxxxxx");// 被测app的Activity类所在包
//                capabilities.setCapability("appActivity", "xxxxxx");从I5版本后Acitivity变成了MainActivity
                capabilities.setCapability("appActivity",".MainActivity");// 被测app的Activity类
                capabilities.setCapability("automationName","selendroid");// 因为真机为4.2版本,所以使用selendroid
//                capabilities.setCapability("noReset", true);
                capabilities.setCapability("androidDeviceReadyTimeout", 15);
                // http://127.0.0.1:4723/wd/hub地址就是AppiumServer的地址
                capabilities.setCapability("app-wait-activity", "activity-to-wait-for");
                driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
                Set<String> contextNames = driver.getContextHandles();
                for (final String contextName : contextNames)
                        System.out.println("App type:" + contextName);
                try {
                        Thread.sleep(5000);
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                driver.context("WEBVIEW_0");// 让appium切换到webview模式以便查找web元素
//                Thread.sleep(8000);
WebElement select = driver.findElement(By.xpath("//*[@id='firstLaunchForm']/div[3]"));
                select.click();// 点击language

driver.context("NATIVE_APP");
                WebElement AlertText=driver.findElement(By.id("message")); ///alert id
                String Alert=AlertText.getText();
        }

作者: lsekfe    时间: 2015-10-20 13:22
感谢分享~~
作者: qqqzhch    时间: 2015-11-8 10:43
谁家的js 还用alert 啦取出砍了
不嫌丑吗?
作者: 冉冉的小屋    时间: 2015-11-12 17:07
今天刚好也测试到这个alert,关注了一下。样式确实不好看,和需求商定,是否重新实现弹框样式。需求否决了,哎。。。客户说丑就是丑,我们说丑那只是建议




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2