java-appium-527操作

https://www.w3.org/TR/webdriver/#list-of-endpoints

针对元素进行操作

  • click()
  • sendKeys()
  • clear() 清空
  • findElement() 二次定位,用的少
  • getAtttibute() 获取属性
  • getLocation()获取X Y
  • 是否展示isDisplayed()
public class XueqiuDemo {

    private AndroidDriver driver;
    @Before
    public void setUp() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("platformName", "android");
        desiredCapabilities.setCapability("deviceName", "domo");
        desiredCapabilities.setCapability("appPackage", "com.xueqiu.android");
        desiredCapabilities.setCapability("appActivity", ".view.WelcomeActivityAlias");
        URL remoteUrl = new URL("http://localhost:4723/wd/hub");
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
        driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
    }

    @Test
    public void sampleTest() throws InterruptedException {
        exist_do("//*[@text=\"允许\"]").click();
        Thread.sleep(2000);
        locate("com.xueqiu.android:id/user_profile_icon").click();
        Thread.sleep(2000);
        locate("com.xueqiu.android:id/tv_login").click();
        Thread.sleep(2000);
        locate("com.xueqiu.android:id/tv_login_by_phone_or_others").click();
        Thread.sleep(2000);
        System.out.println("获取某个属性getAttribute:"+locate("com.xueqiu.android:id/register_phone_number").getAttribute("text"));
        System.out.println("获取坐标getLocation():"+locate("com.xueqiu.android:id/register_phone_number").getLocation());
        System.out.println("获取相对位置getRect():"+locate("com.xueqiu.android:id/register_phone_number").getRect());
        System.out.println("获取长度和高度getSize():"+locate("com.xueqiu.android:id/register_phone_number").getSize());
        System.out.println("获取控件的className getTagName():"+locate("com.xueqiu.android:id/register_phone_number").getTagName());
        System.out.println("获取text属性getText()"+locate("com.xueqiu.android:id/register_phone_number").getText());
        System.out.println("是否展示isDisplayed()"+locate("com.xueqiu.android:id/register_phone_number").isDisplayed());
        System.out.println("toString():"+locate("com.xueqiu.android:id/register_phone_number").toString());
        System.out.println("是否可用isEnabled():"+locate("com.xueqiu.android:id/register_phone_number").isEnabled());
        System.out.println("是否选中isSelected():"+locate("com.xueqiu.android:id/register_phone_number").isSelected());
        System.out.println("hashCode():"+locate("com.xueqiu.android:id/register_phone_number").hashCode());
        System.out.println("getClass()"+locate("com.xueqiu.android:id/register_phone_number").getClass());
        //System.out.println(""+locate("com.xueqiu.android:id/register_phone_number").);
        locate("com.xueqiu.android:id/register_phone_number").sendKeys("123456789");
        //寻找子元素
        locate("//android.widget.LinearLayout[@resource-id=\"com.xueqiu.android:id/register_module\"]").findElement(By.id("com.xueqiu.android:id/register_phone_number")).clear();

        driver.pressKeyCode(4);
    }
    public WebElement exist_do(String el){
        if (locate(el).isDisplayed()){
            return locate(el);
        }
        else{
            return  null;
        }
    }
    public WebElement locate(String locate){
        if (locate.matches("\\/\\/.*")){
            return  driver.findElementByXPath(locate);
        }else{
            return driver.findElementById(locate);
        }
    }
    @After
    public void tearDown() {
        driver.quit();
    }
}

执行结果:

objc[16328]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java (0x10bdb24c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10ddf14e0). One of the two will be used. Which one is undefined.
十月 04, 2018 6:33:49 下午 io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0
信息: Detected dialect: W3C
获取某个属性getAttribute:请输入手机号
获取坐标getLocation():(198, 655)
获取相对位置getRect():[email protected]
获取长度和高度getSize():(849, 121)
获取控件的className getTagName():android.widget.EditText
获取text属性getText()请输入手机号
是否展示isDisplayed()true
toString():[[io.appium.java_client.android.AndroidDriver, Capabilities: {appActivity=.view.WelcomeActivityAlias, appPackage=com.xueqiu.android, databaseEnabled=false, desired={platformName=android, appActivity=.view.WelcomeActivityAlias, appPackage=com.xueqiu.android, deviceName=domo}, deviceManufacturer=Xiaomi, deviceModel=Redmi Note 5, deviceName=406e8f3, deviceScreenSize=1080x2160, deviceUDID=406e8f3, javascriptEnabled=true, locationContextEnabled=false, networkConnectionEnabled=true, platform=LINUX, platformName=Android, platformVersion=8.1.0, takesScreenshot=true, warnings={}, webStorageEnabled=false}] -> id: com.xueqiu.android:id/register_phone_number]
是否可用isEnabled():true
是否选中isSelected():false
hashCode():1573
getClass()class io.appium.java_client.android.AndroidElement

Process finished with exit code 0

原文地址:https://www.cnblogs.com/csj2018/p/9742803.html

时间: 2024-08-12 18:40:29

java-appium-527操作的相关文章

JAVA使用和操作properties文件

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便.Properties 类存在于包 Java.util 中,该类继承自 Hashtable. 1. getProperty ( String  key) ,   用指定的键在此属性列表中搜索

Java 文件写操作

在进行文件写操作的时候,有两种操作方方式.一个是连续写,一个是覆盖式写. 代码如下: import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; // text:要写入的内容:isAppend:写入方式,true为连续写,false为覆盖式写入. public void write(String text

Java的JXL操作xls表格

jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件. 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式. 使用如下: 搭建环境 将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成

JAVA使用POI操作excel

这里提一下,java操作excel的组件除了apache的poi,还有jexcelapi(jxl),其中poi组件的获取地址为poi.apache.org. poi组件中常用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工作薄,HSSFRow表示工作薄中的一行,HSSFCell表示一个单元格 下面是一个简单的写入的demo public static void main(String [] args){ try { HSSFWorkbook

java大数字操作:BigInteger,BigDecimal(浮点型)

java大数字操作: BigInteger:大数字整型的 BigDecimal(浮点型):大数字小数的,也适用大的整数 BigInteger: String num1 = "100381828646148164"; String num2 = "10998979766868"; BigInteger big1 = new BigInteger(num1); BigInteger big2 =new BigInteger(num2); System.out.print

java目录相关操作 示例代码

package org.rui.io; import java.io.File; import java.io.FilenameFilter; import java.util.Arrays; import java.util.regex.Pattern; /** * 目录列表器 测试 * * @author lenovo * */ //Args:"C:/Users/lenovo/Pictures/screen/*\.jpg" public class DirList { public

使用JWPL (Java Wikipedia Library)操作维基百科数据

使用JWPL (Java Wikipedia Library)操作维基百科数据 1. JWPL介绍 JWPL(Java Wikipedia Library)是一个开源的访问wikipeida数据的Java API包,提供了快速访问维基百科中包含的消息,如重定向.类别.文章和链接结构的结构性访问接口.它提供的DataMachine 工具类可快速解析wiki格式文件,生成mysql的数据txt文件,可通过mysqlimport 导入到本地数据库中. JWPL介绍官网:https://dkpro.gi

habse java api使用操作

上一篇cm5.4和cdh5.4安装(http://my.oschina.net/penngo/blog/517223),本文使用HBase的java客户端api操作Hbase. 需要用到的包可以在/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/jars找到,hbase版本1.0.0 HbaseTest3.java代码例子 import java.io.IOException; import org.apache.hadoop.conf.Config

java常见文件操作

收集整理的java常见文件操作,方便平时使用: //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPath.exists()) { myFolderPath.mkdir(); } } catch (Exception e) { System.out.println("新建目录操作出错"); e.printStackTrace(); } //2.创建文件 //impor

Java的ftp操作

下面是FtpClient类的一些介绍: sun.net.ftp.FtpClient.,该类库首要供给了用于树立FTP衔接的类.运用这些类的办法,编程人员能够长途登录到FTP服务器,罗列该服务器上的目录,设置传输协议,以及传送文件.FtpClient类涵盖了简直一切FTP的功用,FtpClient的实例变量保留了有关树立"署理"的各种信息.下面给出了这些实例变量: public static boolean useFtpProxy 这个变量用于标明FTP传输过程中是不是运用了一个署理,因