parent
							
								
									8b0939baf8
								
							
						
					
					
						commit
						6ef190c7d7
					
				|  | @ -1311,7 +1311,7 @@ public class ElementUtil { | ||||||
| 
 | 
 | ||||||
|         Integer perPageTimeout = waitTimeout; |         Integer perPageTimeout = waitTimeout; | ||||||
|         Integer swipeNum = swipeCount; |         Integer swipeNum = swipeCount; | ||||||
|         if ((swipeCount <= 0 && swipeCount > 5)/*限定滑屏查找不超过5次*/ || "0".equals(swipe)  /*不滑屏*/) { |         if ((swipeCount <= 0 || swipeCount > 5)/*限定滑屏查找不超过5次*/ || "0".equals(swipe)  /*不滑屏*/) { | ||||||
|             swipeNum = 0; |             swipeNum = 0; | ||||||
|         } |         } | ||||||
|         if (swipeNum > 0) { |         if (swipeNum > 0) { | ||||||
|  | @ -1322,25 +1322,7 @@ public class ElementUtil { | ||||||
|         } catch (NoSuchSessionException e) { |         } catch (NoSuchSessionException e) { | ||||||
|             throw e; |             throw e; | ||||||
|         } |         } | ||||||
|         WebElement webElement = null; |         WebElement webElement = getWebElement(driver, swipe, xpath, swipeNum); | ||||||
|         while (swipeNum >= 0) { |  | ||||||
|             List<WebElement> elements = null; |  | ||||||
|             try { |  | ||||||
|                 elements = driver.findElements(By.xpath(xpath)); |  | ||||||
|             } catch (WebDriverException e) { |  | ||||||
|                 logger.error("driver查找控件异常:", e); |  | ||||||
|                 throw new ExecuteException("设备自动化驱动连接异常,查找控件失败"); |  | ||||||
|             } |  | ||||||
|             logger.info("找到元素{}个", elements.size()); |  | ||||||
|             if (!CollectionUtils.isEmpty(elements)) {   //xpath找到了
 |  | ||||||
|                 webElement = elements.get(0); |  | ||||||
|             } else {  //xpath没找到
 |  | ||||||
|                 if (swipeNum > 0) { |  | ||||||
|                     ScreenUtil.standardSwipe(swipe, 2000, driver); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             swipeNum--; |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         /*SessionId sessionId = driver.getSessionId(); |         /*SessionId sessionId = driver.getSessionId(); | ||||||
|         logger.debug("当前driver的sessionId为:{}", sessionId); |         logger.debug("当前driver的sessionId为:{}", sessionId); | ||||||
|  | @ -1358,8 +1340,24 @@ public class ElementUtil { | ||||||
|             logger.error("xpath找元素出错", e); |             logger.error("xpath找元素出错", e); | ||||||
|             xpathThread.kill(); |             xpathThread.kill(); | ||||||
|         }*/ |         }*/ | ||||||
|         if (null != webElement) { | 
 | ||||||
|             Rectangle rect = webElement.getRect(); |         Rectangle rect = null; | ||||||
|  |         try { | ||||||
|  |             rect = webElement.getRect(); | ||||||
|  |         } catch (StaleElementReferenceException e) { | ||||||
|  |             logger.warn("页面发生变化,重新查找元素", e); | ||||||
|  |             try { | ||||||
|  |                 Thread.sleep(2000L); | ||||||
|  |             } catch (InterruptedException ex) { | ||||||
|  |                 logger.error("在查找元素等待时被打断", ex); | ||||||
|  |             } | ||||||
|  |             logger.info("再次查找当前页面的元素"); | ||||||
|  |             WebElement we = getWebElement(driver, swipe, xpath, swipeNum); | ||||||
|  |             if (null != we) { | ||||||
|  |                 rect = we.getRect(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if (null != rect) { | ||||||
|             int x = rect.getX(); |             int x = rect.getX(); | ||||||
|             int y = rect.getY(); |             int y = rect.getY(); | ||||||
|             int width = rect.getWidth(); |             int width = rect.getWidth(); | ||||||
|  | @ -1369,6 +1367,31 @@ public class ElementUtil { | ||||||
|         return point; |         return point; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     private static WebElement getWebElement(AppiumDriver<WebElement> driver, String swipe, String xpath, Integer swipeNum) { | ||||||
|  |         WebElement webElement = null; | ||||||
|  |         while (swipeNum >= 0) { | ||||||
|  |             List<WebElement> elements = null; | ||||||
|  |             try { | ||||||
|  |                 elements = driver.findElements(By.xpath(xpath)); | ||||||
|  |             } catch (WebDriverException e) { | ||||||
|  |                 logger.error("driver查找控件异常:", e); | ||||||
|  |                 throw e; | ||||||
|  |             } | ||||||
|  |             logger.info("找到元素{}个", elements.size()); | ||||||
|  |             if (!CollectionUtils.isEmpty(elements)) {   //xpath找到了
 | ||||||
|  |                 webElement = elements.get(0); | ||||||
|  |             } else {  //xpath没找到
 | ||||||
|  |                 // 输出当前页面的ui树
 | ||||||
|  |                 logger.debug("当前页面的信息:{}", driver.getPageSource()); | ||||||
|  |                 if (swipeNum > 0) { | ||||||
|  |                     ScreenUtil.standardSwipe(swipe, 2000, driver); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             swipeNum--; | ||||||
|  |         } | ||||||
|  |         return webElement; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     public static WebElement findWebElementByXpath(AppiumDriver<WebElement> driver, IStepTarget target, Integer waitTimeout, boolean waitStatus, String swipe, Integer swipeCount) { |     public static WebElement findWebElementByXpath(AppiumDriver<WebElement> driver, IStepTarget target, Integer waitTimeout, boolean waitStatus, String swipe, Integer swipeCount) { | ||||||
|         JSONObject object = JSON.parseObject(target.getValue(), JSONObject.class); |         JSONObject object = JSON.parseObject(target.getValue(), JSONObject.class); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue