2016-02-01 49 views
0

我正在嘗試使用appium來測試第三方應用程序。在檢查屏幕上是否存在元素的同時,即使它出現在屏幕上,它也無法找到該元素。uiautomator轉儲返回前一屏幕的轉儲

嘗試以下事情作爲根的一部分:
1.使用Appium驅動getpageSource()獲取頁面xml層次結構。這將返回前一屏幕的xml轉儲
2.使用Android的uiautomator轉儲獲取頁面xml層次結構。這也會返回與appium輸出相同的結果。

其他意見:
1.此行爲不一致。有時候,元素被找到。在其他時候,事實並非如此。
2.當我嘗試通過hierarchyviewer檢查層次結構時,xml轉儲是當前頁面而不是前一頁面。這幾乎表明層次結構查看器以與uiautomator不同的方式獲取xml轉儲。

任何線索我如何解決這個問題?

感謝, Aarthi

+0

這是在應用程序中的web視圖周圍的某個地方? – nullpointer

+0

不可以。有網頁瀏覽,但即使在沒有網頁瀏覽的屏幕中也會出現錯誤。 –

+0

我注意到Appium並不總是獲得當前頁面。最好的解決方法是使用wait(http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp) – econoMichael

回答

0

嘗試使用隱性或顯性的等待,因爲它們是間歇性的

隱含

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

明確

WebElement Elementid = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.presenceOfElementLocated(By.id("Elementid "))); 
1

如果您使用UiDevice進行測試, 只需切換setCompressedLayoutHierarchy()

我不知道與此問題相關的根本原因─轉儲一個與前一個相同。但是,切換時,它會檢索明顯的當前視圖層次結構。