appium for mobile web 之使用 ChromeDriver

之前研究了一段时间的appium for native app 相应的总结如下:

                                              appium测试环境搭建 :http://www.cnblogs.com/tobecrazy/p/4562199.html

                    知乎Android客户端登陆:http://www.cnblogs.com/tobecrazy/p/4579631.html

appium实现截图和清空EditText:http://www.cnblogs.com/tobecrazy/p/4592405.html

appium 滑动处理:http://www.cnblogs.com/tobecrazy/p/4612133.html

最近有人问我怎么使用web driver,所以特来研究一下

准备工作:1. 安装chrome

编写代码

package com.dbyl.core;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import io.appium.java_client.android.AndroidDriver;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class baidu {
    AndroidDriver<WebElement> driver;

    /**
     * @author Young
     * @throws IOException
     */
    public void startRecord() throws IOException {
        Runtime rt = Runtime.getRuntime();
        // this code for record the screen of your device
        rt.exec("cmd.exe /C adb shell screenrecord /sdcard/runCase.mp4");

    }

    @BeforeClass(alwaysRun = true)
    public void setUp() throws Exception {
        // set up appium

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "chrome");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "Android Emulator");
        capabilities.setCapability("platformVersion", "4.4");
        driver = new AndroidDriver<WebElement>(new URL(
                "http://127.0.0.1:4723/wd/hub"), capabilities);
        startRecord();

    }

    @Test
    public void runChromeWebBrowser() {
        driver.get("http://www.baidu.com");
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
        System.out.println(driver.getTitle());
        snapshot((TakesScreenshot) driver, "before_search.png");
        driver.findElementByXPath("//textarea[@id=‘index-kw‘]").sendKeys(
                "appium");
        driver.findElement(By.xpath("//button[@id=‘index-bn‘]")).click();
        driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
        System.out.println(driver.getTitle());
        snapshot((TakesScreenshot) driver, "after_search.png");
        Assert.assertTrue(driver.getTitle().contains("appium"));

    }

    /**
     * This Method create for take screenshot
     *
     * @author Young
     * @param drivername
     * @param filename
     */
    public static void snapshot(TakesScreenshot drivername, String filename) {
        // this method will take screen shot ,require two parameters ,one is
        // driver name, another is file name

        String currentPath = System.getProperty("user.dir"); // get current work
                                                                // folder
        File scrFile = drivername.getScreenshotAs(OutputType.FILE);
        // Now you can do whatever you need to do with it, for example copy
        // somewhere
        try {
            System.out.println("save snapshot path is:" + currentPath + "/"
                    + filename);
            FileUtils
                    .copyFile(scrFile, new File(currentPath + "\\" + filename));
        } catch (IOException e) {
            System.out.println("Can‘t save screenshot");
            e.printStackTrace();
        } finally {
            System.out.println("screen shot finished, it‘s in " + currentPath
                    + " folder");
        }
    }

    @AfterClass
    public void afterTestStopDriver() {
        driver.quit();
    }
}

这其中,遇到输入框识别的问题,刚开始是使用UIAutomator

发现 web 的element 压根识别不了,最后想到这应该和selenium webdriver一样

所以在识别百度输入框,By xpath

"//textarea[@id=‘index-kw‘]"

时间: 2024-10-29 05:19:27

appium for mobile web 之使用 ChromeDriver的相关文章

Automating mobile web apps

Automating mobile web apps If you're interested in automating your web app in Mobile Safari on iOS or Chrome on Android, Appium can help you. Basically, you write a normal WebDriver test, and use Appium as the Selenium server with a special set of de

Mobile Web 开发,布局必须用 table,这要写进手则

直到今天,JavaScript 的世界仍然洪荒. 比如说 Angular 的 ngView 是不能玩儿嵌套的. 试了 angular-ui-router,未果,因和 $locationProvider & ngRoute 的设置冲突.弃之. 是.没有克服不了的技术困难.如果有,绕过去就是了.所以,还是没有. 没有解决不了的技术问题.如果有,让它不是问题就是了.所以,还是没有. -------------------------- 何时冒出一个叫什么猎豹的浏览器?用的是 IE 的内核.IE 下,读

非常实用的mobile web application远程调试工具 weinre

在移动web应用中,由于没有类似chrome和firebug的调试工具,调试起来比在PC上相对麻烦一些,有时候只能反复进行修改比对,但使用weinre我们可以轻松做到远程调试的功能. 什么是weinre? 官方解释: we是指web,in是指inspector,re是指remote,合起来就是weinre. http://people.apache.org/~pmuellr/weinre/ 如何安装? weinre基于node,使用npm快速安装: npm install weinre 使用 使

mobile web retina 下 1px 边框解决方案

http://www.tuicool.com/articles/ZRv6bun 再谈mobile web retina 下 1px 边框解决方案 时间 2015-01-03 12:03:31  Hugo Web前端开发 原文  http://www.ghugo.com/css-retina-hairline/ 主题 WebKitiOSCSS 本文实际上想说的是ios8下 1px解决方案. 1px的边框在devicePixelRatio = 2的retina屏下会显示成2px,在iphone 6

Mobile Web调试工具Weinre (reproduce)

Mobile Web调试工具Weinre 现在.将来,用移动设备上网越来越成为主流.但对于开发者们来说,移动web的调试一直是个难题,前期可以使用模拟器来协助调试,但到了真机调试阶段就让人非常头痛.而Weinre就是解决这难题的利器. Weinre的本意是Web Inspector Remote,它是一种远程调试工具.功能与Firebug.Webkit inspector类似,可以帮助我们即时更改页面元素.样式,调试JS等,下面就简单介绍下如何使用.下面以以Windows系统为例: 一.首先确保

13 Reasons Why You Should Pay Attention to Mobile Web Performance

Mobile is no longer on the sidelines. If you’re not already thinking mobile first, you should at least consider it. Let’s go over compelling data that demonstrate the importance of focusing on performance for mobile devices. Business is Booming on th

打造离线使用的Mobile Web App

最近公司举办技术大赛,我和同事一起制作了一个叫做10K Hours的Mobile Web App,可以帮助你通过一万小时的努力,成为某个领域的专家.正好前段时间翻译了一本书<HTML5 Mobile Development Cookbook>,中文译本在此.其中讲到了不少移动端Web开发的Best Practices,正好就用到了10K Hours这个应用上.其中我觉得非常有用但是又让人头痛的一个功能就是AppCache:它可以让用户在访问一次网页以后,下次再来时不能访问网络的情况下,也可以使

Mobile Web开发实践

移动设备的快速发展给用户带来了很大的便利.用户使用Android.iPhone和其它移动设备很容易接入互联网.移动设备对网页的性能要求比较高,下面就说说Mobile Web开发的一些心得. Viewport 当你用iPhone访问一个没有面向移动设备优化过的网站时(最好选取960px宽度的网站),你会发现iPhone上面刚好可以把整个页面显示出来,但是页面被缩小了非常多,字体非常小.这其实是Sarari默认把自己当成980px宽度来处理的,而所有iPhone(竖屏)的真实宽度为320px,事实上

front end about mobile web techs

WEB OF DEVICES http://www.w3.org/standards/webofdevices/ MOBILE WEB http://www.w3.org/standards/webdesign/mobilweb JAVASCRIPT APIS CURRENT STATUS http://www.w3.org/standards/techs/js#w3c_all