【问题标题】:Mobile element do not exist in DOM anymore - seleniumDOM 中不再存在移动元素 - selenium
【发布时间】:2020-02-11 06:42:52
【问题描述】:

使用 appium + selenium + java。尝试等待具有特定文本的移动元素。

在移动应用程序中,我登录到页面,并且在登录期间有带有文本的 android.widget.TextView(0),所以我正在检查此文本,以及是否显示具有不同文本的新元素 android.widget.TextView(0)然后我可以进行其他步骤。当新元素出现时,旧元素不存在

为此使用以下代码,但我可以看到

Cached elements 'By.clazz: android.widget.TextView' do not exist in DOM anymore 

代码:

public static MobileElement waitForElementText(AndroidDriver driver, int index, String text, int timeout) {

        List<MobileElement> mobileElement = null;

        do {

            mobileElement = new WebDriverWait(driver, timeout)
                    .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className("android.widget.TextView")))
                    .stream().map(element -> (MobileElement) element).collect(Collectors.toList());
            System.out.println("waiting for: " + text + " found: " + mobileElement.get(index).getText());
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } while (mobileElement.get(index).getText() != text);

        System.out.println(mobileElement.get(index).getText());

        return mobileElement.get(index);
    }

任何想法我做错了什么?

【问题讨论】:

标签: java android selenium appium


【解决方案1】:

Cached elements 'By.clazz: android.widget.TextView' do not exist in DOM anymore 正在发生,因为当您尝试获取文本时,页面上不存在该元素。因此,与其将while 条件放在检查文本上,不如将条件放在元素列表的大小上。当页面上不存在该元素时,大小将变为零。

将while条件改为:

while (mobileElement.size()>0);

【讨论】:

  • 嗨萨米尔阿罗拉。当我使用 while (mobileElement.size()>0);循环没有结束。应用程序打开预期页面并找到我等待但循环没有结束的新元素:(
猜你喜欢
  • 1970-01-01
  • 2014-07-15
  • 2014-06-06
  • 2014-10-05
  • 1970-01-01
  • 2021-08-05
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多