以上文为例
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()