您的位置:首页 > 移动开发

appium及webdriver定位总结

2017-01-12 18:58 381 查看

appium及webdriver定位总结

1、同一个页面,有多个TextView,开发有时会给它们定义同一个id,如下图:



  这种情况还是可以使用ID定位的,先通过ID定位到TextView的元素组,再获取该元素组中元素。比如获取图中的第二个订单号:
List<WebElement> orderNumbers = driver.findElementsById("com.kingdee.zhihuiji:id/tv_code");
String secondOrderNomber = orderNumbers.get(0).getText();


2、知道元素text属性的值,可以通过xpath相对定位该元素,如下图:



代码如下:
WebElement element = driver.findElementByXPath("//android.widget.RadioButton[@text='明细']");


3、通过class和href组合定位,如下:



代码:
OperateElement.waitAndClickByXpath("下一个月", driver, "//div[@class='navImg NavImgr']/a[@href='###']");


4、class属性值会随着编辑状态变化的情况:



  遇到这种情况可以先点击空白处,退出编辑状态后再定位:
public void test记账() throws Exception {
.... 
Thread.sleep(2000);
driver.switchTo().frame("voucher");
//填写第1行摘要
driver.findElement(By.xpath("//tr[@class='entry_item edit-row'][1]//input[@class='edit_summary']")).sendKeys("摘要1");
//点击会计科目
driver.findElement(By.xpath("//tr[@class='entry_item edit-row'][1]//td[@class='col_subject']")).click();
Thread.sleep(1000);
//点击“库存现金”
driver.findElement(By.xpath("//div[@class='list-item on'][1]")).click();
//'借方金额“输入5000
driver.findElement(By.xpath("//tr[@class='entry_item edit-row'][1]//input[@class='edit_money']")).sendKeys("5000");
//点击”记账凭证“退出编辑状态
driver.findElement(By.className("voucher_tit")).click();
Thread.sleep(1000);

           //填写第2行摘要
           driver.findElement(By.xpath("//tr[@class='entry_item'][1]//td[@class='col_summary']")).click();
           Thread.sleep(1000);
           driver.findElement(By.xpath("//input[@class='edit_summary']")).sendKeys("摘要2");
           //点击”记账凭证“退出编辑状态
           driver.findElement(By.className("voucher_tit")).click();
           Thread.sleep(1000);

       ....

}



未完待续......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息