【问题标题】:testing non-angular app with protractor and webdriver fundamentals使用量角器和 webdriver 基础测试非 Angular 应用程序
【发布时间】:2016-06-29 18:36:16
【问题描述】:

我正在使用量角器为非角度应用程序编写 e2e 测试,虽然有很多关于如何实现这一点的信息,但似乎有很多不同的方法,所以我有一些基本问题。

  1. 在测试非 Angular 网站时,有些人说只使用 webdriver 调用,例如“browser.driver.get()”,这样量角器就不会期望 Angular 完成页面加载等。其他回复说您可以设置 browser.ignoreSynchronization = true,并毫无问题地调用 browser.get()(这似乎是理想的解决方案,因此如果处理有角度和无角度的问题,您可以依赖一个 api 调用)。这两种方法是否等效,如果不是,请解释差异。

  2. protractor 在处理 webdriver 或 browser.ignoreSynchronization = true 时是否仍然遵守承诺?例如,如果我进行“获取”调用,量角器会在执行下一步之前等待,直到该“获取”请求得到满足?

  3. 与 #2 相关,在处理 webdriver/non-angular 应用程序时是否必须使用 Promise 链来确保用户交互按顺序执行?例如,如果我使用 sendKeys() 输入名称然后 click() 提交信息,我是否必须将 click() 嵌套在 sendKeys().then 中?

  4. webdriver 如何准确地知道页面的所有元素在获取请求后都准备好了(我看到的每个解决方案都涉及使用超时或依赖检查元素是否首先存在)?如果该页面具有嵌入式应用程序(例如谷歌地图)并且我想模拟用户点击“查看更大的地图”进行 e2e 测试怎么办?

【问题讨论】:

    标签: javascript selenium-webdriver protractor e2e-testing


    【解决方案1】:
    1. 不,它们不相等。 browser.get() 是 browser.driver.get() 之上的一个包装器。如果在页面加载时找不到角度库,它将引发错误。因此,将 browser.driver.get() 用于非 Angular 应用程序。

    2. 不,它不尊重承诺,不会等待。

    3. 不,webdriver 使用 promise 库和控制流来管理。

    【讨论】:

    • 其实 browser.get() 工作正常如果 browser.ignoreSynchronization = true,我知道这个方法包装了 webdriver 调用,但我想知道是否还有其他区别?
    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2018-10-09
    • 2018-10-25
    • 2017-02-20
    相关资源
    最近更新 更多