Appium 获取元素控件及其属性

时间:2022-12-06 16:40:57
以上文为例  http://blog.sina.com.cn/s/blog_696665040101hj5y.html 先来分析下脚本
        WebElement el = driver.findElement(By.name("Add Contact"));        //根据控件的name来获取控件        el.click();        //对控件执行点击操作        List textFieldsList = driver.findElements(By.tagName("textfield"));        //根据控件的tagName来获取所有控件        textFieldsList.get(0).sendKeys("Some Name");//对页面上第一个textfield类型的控件的赋值输入Some Name        textFieldsList.get(2).sendKeys("Some@example.com");//对页面上第三个textfield类型的控件的赋值输入Some@example.com        driver.findElement(By.name("Save")).click();         //对名为Save的控件执行点击操作
由此可见控件至少有tagName,name ,text 三个属性。
一、获取控件属性 1.获取控件类名 System.out.println("[Button Add Contact]Class: "+el.getClass());   2.获取控件类型 System.out.println("[Button Add Contact]TagName: "+el.getTagName());3.获取控件的值System.out.println("[Button Add Contact]Text: "+el.getText());    输出如下: [Button Add Contact]Class: class org.openqa.selenium.remote.RemoteWebElement [Button Add Contact]TagName: android.widget.Button[Button Add Contact]Text: Add Contact
二、获取元素的方式 1.元素类型(tagname) 通过UI的控件类型 List textFieldsList = driver.findElements(By.tagName("textfield"));
注:在android下文本输入框的类型是EditText,而是上面举例写的是textfield,那是因为android / ios都要对与seleium都有一个元素映射,对于Android下的元素对应, 可以参考 https://github.com/appium/appium/blob/master/lib/devices/android/bootstrap/src/io/appium/android/bootstrap/AndroidElementClassMap.java
2.元素的位置(xpath) 具有一定约束的路径抽象标示, 基于XPath方式
3.元素的值(name) driver.findElement(By.name("Save")).click(); 通过元素的文本(text), 标签(label),描述信息(content‐desc) ,或者id标示来查找

4.元素的ID driver.findElement(By.id("com.example.android.contactmanager:id/contactNameEditText")).getText()