当前位置: 首页 > 面试题库 >

Java Wrapper方法,等待元素可用于Apache Cordova Webview驱动的应用程序

施华奥
2023-03-14
问题内容

对于基于多个Webview的移动应用程序(使用Cordova,PhoneGap,XCode构建的iOS应用程序),我创建了以下方法来检查是否存在元素。请提示以下片段是否有意义?因为基于传统显式等待的传统包装器功能无法可靠运行。

    public boolean waitForElemToBeAvailable(final By by, final int timeout, int retries) {
    WebDriverWait wait = new WebDriverWait(appiumDriver, timeout);
    boolean success = false;
    final long waitSlice = timeout/retries;

    if(retries>0){
        List<WebElement> elements = appiumDriver.findElements(by);
        if(elements.size()>0){
            success = true;
            return success;
        }else {
            appiumDriver.manage().timeouts().implicitlyWait(waitSlice, TimeUnit.SECONDS);
            retries--;
        }
    }
    return success;
}

谢谢


问题答案:

按照您共享的代码块,我看不到任何附加值来检查 是否 通过
出现了elementimplicitlyWait。该实现看起来像是纯开销。相反,如果你看看 Java文档
的ExpectedCondition接口从
org.openqa.selenium.support.ui
包,其中模型预期可能,以评估的东西,不为空也不假还包含一个条件ExpectedConditions类,可以调用WebDriverWait类和
方法 在一个循环中 __提供更详细的方法来确认是否已达到特定条件。 这为我们提供了更多选择 WebElement
所需行为的灵活性。一些广泛使用的方法是:


  • 元素的存在:

    presenceOfElementLocated(By locator)
    
  • 元素的可见性:

    visibilityOfElementLocated(By locator)
    
  • 元素的交互性:

    elementToBeClickable(By locator)
    

注意
:根据文档,请勿混合使用隐式和显式等待。这样做可能导致无法预测的等待时间。



 类似资料:
  • 下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?

  • 2)使用了显式wait(WaitForelementPresent/WaitForVisible/ElementTobeClickable/wait for invisibility of element等)(所有可能的尝试) 3)使用Java脚本(window.angular.element('body').injector().get('$http').PendingRequests.Leng

  • 如果我的问题听起来很重要,我事先道歉,我在质量保证和硒方面是新手。 我正在使用Java和Selenium编写测试,有时我需要等待web元素被访问,下面是我以前使用的代码片段: 但现在我在某处看到: 第二个当然短得多,但我不知道它是否更好,换句话说,它们是否不同?如果是,如何?哪一个更好?

  • 所以我们有一页医学专科。它原本只是英文的。因此,如果您搜索“neuro”,则HTML看起来类似于 然后他们添加了西班牙语,所以并不是所有的结果都会返回,但是只有西班牙语是可见的。一个新的 > 添加在底部。 是否有方法等待任何匹配xpath的元素可见?注意,visibilityOfAllElements()将不起作用,因为它们不会全部可见。 我想可以做的是,预先计算所有带有@id和“width”的元

  • 我有一个动态加载的页面,其中包含一个按钮。我正在尝试等待selenium使用C#绑定点击按钮。我有以下代码: 不过这不管用。click事件永远不会被触发。selenium脚本不会抛出异常警告ID为“addInspectionButton”的元素不存在。它只是不能点击它。如果我加一根线。Sleep(3000)在wait语句和我获得按钮元素句柄的那一行之间。 我没有使用预期条件.元素在这里正确点击吗?

  • 问题内容: 我正在寻找类似于在单击元素之前检查元素是否已显示的内容。我认为可以通过完成此操作,因此我使用了以下方法: 然后点击 不幸的是,有时它等待元素,有时不等待。我寻找了一段时间,找到了这个解决方案: 它等待一切正常,但是在超时之前必须等待10次5、50秒。有点多。因此,我将隐式等待时间设置为1秒,直到现在一切都还不错。因为现在有些事情在超时前等待10秒,而另一些事情在1秒之后超时。 如何覆盖