Appium测试UWP之当元素无法识别时通过泛型类来遍历返回元素

上一篇 / 下一篇  2017-05-18 12:16:38 / 个人分类:Appium

  Appium对UWP的APP元素识别支持太有限了,很多时候会遇到无法通过常用的属性来识别到对应元素,如常用的By Name,By ID,By ClassName。
  我们在测试UWP时遇到APP界面上有多个Image的连接,每个Image连接都是都无法区分,没有可以识别的唯一属性,学习了好久也百度了,那就是通过枚举类型来返回要查找的元素,也可以通过坐标来点击,但是会遇到一个问题,当分辨率改变时,就不适用了,首先说说通过泛型来返回所需要的元素。
   如下代码:
   //定义一个WebElement类的泛型类型变量ele,ele返回的是界面上所有的ClassName为Image的元素
   List<WebElement> ele=driver.findElementsByClassName("Image");
   //通过Java中的Iterator来返回所有的元素
   Iterato<WebElement> it=ele.iterator();
  //we变量用于接收it的下一个元素
   WebElement we;
   WebDriverWait wd=new WebDriverWait(driver, 20);
   while(it.hasNext()){
we=it.next();
String framework=we.getAttribute("FramewordId");
//这里是等待页面加载,等找到了we是可以点击的元素时再进行下一步
wd.until(ExpectedConditions.elementToBeClickable(we));
//由于界面上ClassName为image的元素是5个,有两个是不需要的元素,其余三个是需要的,需要的三个image,有frameworkid和automationid属性是不为空的,其他两个image没有这两个属性,所以通过判断获取到的//FrameworkID是否为空来进行操作
if(framework!=null){
we.click;
driver.manager().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
driver.findElementByName("Back");
}
}

   
  实际在操作过程中遇到一个问题,getAttribute方法对UWP的APP似乎还不支持,当使用getAttribute方法时获取到的对应属性值都是为null,所以还需要继续解决新问题。
  希望有经验的朋友们多来指教,解答我这个初学者的疑惑。
  

TAG: 元素

 

评分:0

我来说两句

Open Toolbar