单击 Cypress 后捕获 URL(window.location 更改)

Rad*_*iac 8 testing e2e-testing cypress

我想知道如何在<a>链接上的点击事件后捕获和读取 URL 。

在 onClick 事件中,我们的 javascripthref对所点击链接的实际内容进行一些字符串操作,然后动态window.location.href = myNewReplacebleURL完成。原始href位置不一定是您在 onClick 之后到达的位置。

这是我开始的方式:

describe("Twitter", function() {

  it("Should assert that via value is set correctly in JS", function() {

    cy.server();
    cy.visit(Cypress.config("appUrl") + "/probes/sha/sha-via.html");
    cy.get("#v_test ul.share li a")
      .click();

  });

});
Run Code Online (Sandbox Code Playgroud)

编辑:我想要的是捕获位于“页面加载”步骤的 URL。

在此处输入图片说明

Gui*_*bbe 11

您应该能够使用cy.on在事件回调中执行断言url:changed

cy.on("url:changed", (newUrl) => {
  expect(newUrl).to.contain("?magic=true")
})
Run Code Online (Sandbox Code Playgroud)

  • 我必须使用这种方法来捕获查询参数更改,但我不明白。通常,Cypress 的理念是重试,直到断言起作用,因此 cy.url().should("match", "?foo=bar")` 预计会等待 url 匹配“foo=bar”。事实并非如此,我必须按照您的描述收听“url:changed”才能使其正常工作。 (2认同)

Dio*_*cha 5

您可以使用cy.location()命令,例如:

cy.get("#v_test ul.share li a")
      .click();
cy.location('href').should('eq', 'newUrl');
Run Code Online (Sandbox Code Playgroud)

另外,作为命令的别名,cy.location('href')您可以使用cy.url().