Перехват URL-адреса после клика с помощью Cypress (изменения window.location)

Я хотел бы знать, как захватить и прочитать URL-адрес после события клика по ссылке <a>.

В событии onClick наш javascript выполняет некоторые строковые манипуляции с фактическим href ссылки, по которой щелкнули, а затем на лету выполняется 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();

  });

});

РЕДАКТИРОВАТЬ: Я хотел бы поймать URL-адрес, расположенный на этапе «Загрузка страницы».

Перехват URL-адреса после клика с помощью Cypress (изменения window.location)

Вам удалось как-то решить этот вопрос?

jaw 17.10.2019 08:47

Нет, интересно, возможно ли это вообще

Radu Chiriac 18.10.2019 10:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
2
10 858
2

Ответы 2

Вы можете использовать команду cy.location(), например:

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

Кроме того, в качестве псевдонима для команды cy.location('href') вы можете использовать cy.url().

Спасибо, но, как вы можете видеть на моем обновленном изображении, я хотел бы остановиться на шаге загрузки страницы. Сгенерированный URL-адрес (который не существует как newURL внутри Cypress) иногда может перенаправлять несколько раз.

Radu Chiriac 04.02.2019 11:17

попробуйте добавить cy.location('pathname') вместо cy.location('href').

Victor Oliveira 08.10.2020 12:54

Это больше не работает с последней версией кипариса (6.0.1 на сегодняшний день)

Martin Carel 01.12.2020 02:39

Вы должны иметь возможность использовать сайон для выполнения утверждения внутри обратного вызова события url:changed:

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

Мне пришлось использовать этот подход, чтобы поймать изменения параметров запроса, но я этого не понимаю. Обычно философия Cypress заключается в том, чтобы повторять попытки до тех пор, пока ваше утверждение не сработает, поэтому ожидается, что cy.url().should("match", "?foo=bar") будет ждать, пока URL-адрес не будет соответствовать «foo=bar». Это не так, я должен слушать url:changed, как вы описали, чтобы он заработал.

Eric Burel 13.01.2021 08:36

Другие вопросы по теме