【问题标题】:Cypress Test - Google Places Autocomplete not functioning赛普拉斯测试 - Google 地方信息自动完成功能不起作用
【发布时间】:2018-10-29 05:20:54
【问题描述】:

我正在尝试使用 Cypress 作为我正在开发的 Angular 网站的测试工具。其中一项测试是位置搜索,它使用 google 地方服务来自动完成位置。运行正常,如下图所示:

但是,在 cypress 测试中,不会出现自动完成元素,因此无法选择位置来继续搜索。 测试正在触发它应该让它出现的方法,但它没有。如果我在 cypress 浏览器中手动输入也会出现。

有人知道是什么原因造成的吗?

【问题讨论】:

  • 有趣。是否有没有发生的帧、重定向或 api 调用?

标签: angular google-places cypress


【解决方案1】:

我遇到了这个问题,我不得不放慢打字速度。

【讨论】:

  • 减慢打字速度确实对我有用。但是,您知道我们为什么要这样做吗?
【解决方案2】:

您可以尝试在“类型”选项对象上每次按键后设置“延迟”:

cy.get("input[data-name=autocomplete]")
  .type("AUTOCOMPLETE DATA", { delay: 100 })
  .type("{enter}", { delay: 100 })

https://docs.cypress.io/api/commands/type.html#Arguments

【讨论】:

    【解决方案3】:

    一种方法是:

    cy.get("input[data-name=autocomplete]")
      .type("AUTOCOMPLETE DATA")
      .wait(2000)
      .type("{enter}")
      .wait(500);
    

    这让自动完成有时间从它需要的任何地方加载数据,然后您可以使用.type("{enter}") 选择第一个元素。

    【讨论】:

    • 测试代码中的静态等待语句是一个禁区。如果您需要等待声明,则意味着您无法控制正在发生的事情。赛普拉斯将响应 dom 中的更改,并有适当的超时来“等待”这些更改完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多