Я хотел бы знать, как захватить и прочитать 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-адрес, расположенный на этапе «Загрузка страницы».
Нет, интересно, возможно ли это вообще





Вы можете использовать команду 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) иногда может перенаправлять несколько раз.
попробуйте добавить cy.location('pathname') вместо cy.location('href').
Это больше не работает с последней версией кипариса (6.0.1 на сегодняшний день)
Вы должны иметь возможность использовать сайон для выполнения утверждения внутри обратного вызова события 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, как вы описали, чтобы он заработал.
Вам удалось как-то решить этот вопрос?