2016年11月18日星期五

隐含和明确等待Appium

正如我们所面临的那样,我们需要等待在移动应用程序中加载。我们使用 thread.sleep() 但不建议使用这一点,因为我们可以预测等待的确切时间。 Appium提供隐式等待和显式等待功能。当我们知道我们不知道等待确切的时间等待时,我们可以使用隐式等待当我们不知道等待的确切时,但我们需要等到任何移动元素都是可见的。
 

在这篇文章中,我们将看到两种类型的等待,这些等待广泛用于Appium-

视频 -  

 

1.impleic等。
2. expleic等待。

隐含&明确等待Appium
等待Appium.

1.implicit wait.

隐式等待意味着通知Appium Web Driver等待特定的 等待后,Web元素不可见的时间量 那个特定的点然后抛出“没有这样的元素发现异常”。 
查看下面给出的示例以了解如何使用隐式等待 在Appium测试案例中,在低于测试用例中,我们将添加30个等待30 打开浏览器后的秒数,以便加载页面 完全。我们隐含地指定了时间和时间单位 被称为隐含等待。
方法 makeiclywait() 接受2参数第一个是时间值,第二个是时间单位,如天,小时,分钟,秒,毫秒等。

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

2.明确等待 -

明确等待等待时间我们也提供了等待 健康)状况。它会等到条件或最高等待时间 在抛出异常之前提供“ElementNotVisibleException..“。
我们可以说,明确的等待是智能等待 动态地用于指定条件。查看以下测试用例 使用Appium Appicit Wait.First的示例我们需要实例化 WebDriverWait 使用Web驱动程序引用和时间帧等待对象 seconds.
然后我们可以使用 直到() 通过预期等待的方法 条件并在我们的测试用例中使用它,以便等待直到元素 在屏幕上可见。我们正在使用  VisibillyOfElementLocated() 条件 了解其他条件类型Eclipse IDE中的预期条件 然后按CLTR +空格栏,您将获得条件列表 您可以用明确的等待使用。


WebDriverwait. wait = new WebDriverWait(driver,20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("about_me")));      


通过此,您可以通过等待问题来摆脱测试用例故障。

我希望你能找到这个帖子有用。在Facebook或Google Plus上放弃我获得最新的帖子更新。快乐测试。


18评论:

  1. 感谢您在Appium上的所有帖子:)非常感谢

    回复删除
    答案
    1. 谢谢你阅读。更多帖子即将推出安排。通过Facebook和Google+保持联系

      删除
    2. 伟大的文章 学生的IOT项目

      最后一年的深度学习项目

      钦奈的JavaScript培训

      钦奈的JavaScript培训

      角度训练涵盖了各种主题,包括组件,角度指令,角度服务,管道,安全基础,路由和角度可编程性。新的角度训练将奠定基础,您需要专注于单页应用程序开发人员。 角训练

      删除
  2. 这些隐含等待和明确的等待都可以用于原生应用程序,这太右了吗?他们可以一起使用吗?当我已经在@Beforeclass设置了隐式等待时,我可以在任何其他@Test中使用显式等待吗?那么哪个是优先级?

    回复删除
    答案
    1. 回答你们两个问题"YES"您可以将其用于本机应用程序,您可以使用两种类型的等待。

      感谢造访 ,
      安努阿

      删除
  3. 隐式等待告诉WebDriver或Selenium脚本在Selenium脚本尝试找到对象/元素或对象/元素时调用DOM的一定程度,如果它们不可见或可互行。
    xplicit way告诉webdriver在抛出某个预期条件之前等待某个时间“ElementNotVisibleException..”例外,显式等待特定等待仅适用于指定的元素。显式等待具有更好的灵活性,然后隐含等待。
    有关最佳示例链接的详细信息:

    http://www.qamantra.com/2018/01/how-to-use-explicit-and-implicit-wait.html

    回复删除
  4. 你好,

    我面临着wait.until的问题(预期的条件.Elendtobeclickable(by));

    我的功能被定义为

    公共静态移动设备waitformobileeLementtobecliclable(by){
    try {
    返回(MobileElement)Wait.Until(IndectiveSconditions.ElementTobeclickable(by));
    }
    catch(nosuchelementexception nse){
    System.out.println("没有找到这样的元素!");
    return null;
    }
    捕获(timeoutexception toe){
    System.out.println("超时异常");
    return null;
    }
    }


    我得到的错误是这样

    警告:FindElement抛出WebDriverException(by.name:登录设置)
    [testng] org.openqa.selenium.webdriverexception:返回值无法转换为WebElement:{Element = Cae0cba1-8a14-4ba-86ba-ebaf83895b41}

    回复删除
  5. 应该用什么字符串代替"about me"

    回复删除
  6. 谢谢提供信息。很有帮助。我如何遵循更多工作?

    回复删除
  7. 我真的喜欢阅读你的文章。我想通知你,你有像我一样欣赏你的工作的人。

    TechWithGeeks.
    talesbuzz.
    Whizherald.

    回复删除
  8. 伟大的帖子!我个人喜欢你的网站。 。我留下了深刻的印象,以阅读你的内容。我期待着你博客中的下一个有价值和信息丰富的概念。整体优秀的帖子。继续:)做得好!
    准备修理
    设备维修
    AC维修和服务
    煤气炉维修
    笔记本电脑维修
    我们的服务合作伙伴:
    孟买叫女孩
    德里的护送服务
    在线B2B市场
    Satta King

    回复删除
  9. 非常好的信息,这对这么多人来说是有价值的。感谢您分享此博客。
    B2B市场
    批发商
    我们的服务合作伙伴
    冰箱维修服务
    Satta King
    孟买叫女孩
    数字营销公司

    回复删除
  10. 我很佩服。我不't think I'在你身上遇到任何关于这个主题的人。你真的很好地了解和非常聪明。你写了一些人可以理解的东西,并为每个人提供了痛苦的主题。真的,你在这里得到了伟大的博客。
    B2B市场
    批发商
    我们的服务合作伙伴
    冰箱维修服务
    Satta King
    孟买叫女孩

    回复删除