【问题标题】:Cypress loads wrong page after click点击后赛普拉斯加载错误页面
【发布时间】:2019-09-18 09:14:55
【问题描述】:

我将我的网站设置为外语,因此当赛普拉斯点击我网站上的联系按钮或任何带有 href 标签的按钮时,它本应将我发送到该页面的外文版本,但它却将我发送到英文的。当我尝试手动操作时,我无法复制它。

我正在测试我的网站 salaenrollment.com,以确保如果我将网站上的语言切换为外语,当我点击联系人等时它不会切换回来。

cy.visit('https://salaenrollment.com/')

cy.contains('ភាសាខ្មែរ').click()
  .url().should('include', '/kh')

cy.contains('ទំនាក់ទំនង').should('have.attr', 'href', '/kh/contact')
  .click()

每次我用 cypress 测试它时,语言总是会切换,但是当我尝试手动复制它时,我永远无法切换它。我尽可能简单地在 cypress 上编写代码,并在代码中手动设置等待时间,但没有任何效果。大约 90% 的时间,当我使用 cypress 进行测试时,语言不会切换。网站没有问题,也没有错误。

应该发生的是,cypress 将进入网站,更改语言,单击联系按钮,联系页面将为外语。 cypress 测试应该与手动测试相匹配。

【问题讨论】:

  • 您网站的语言是否取决于任何 cookie(地理位置/浏览器语言)或排序?
  • 不,不依赖于那些

标签: javascript jquery cypress


【解决方案1】:

您可能需要添加一些等待时间,因为您的页面在切换语言后会重新加载,也许您需要检查您的元素是否已经出现在 Dom 中,使用 should('be.visible') 这将通过尝试增加一些等待时间检查元素是否准备好。

cy.visit('https://salaenrollment.com/')

cy.contains('ភាសាខ្មែរ').click()
  .url().should('include', '/kh')

cy.contains('ភាសាខ្មែរ').should('be.visible')

cy.contains('ទំនាក់ទំនង').should('have.attr', 'href', '/kh/contact')
  .click()

【讨论】:

  • 等待时间并没有真正的帮助。我尝试添加 be.visible,它第一次确实有效,但无论我重新加载多少次,它都不再有效。
  • 你找到解决办法了吗?
【解决方案2】:

你的选择器也错了,请试试这个(它在我的本地设置中有效):

 cy.visit('https://salaenrollment.com/')

        cy.get('.language').click()
            .url().should('include', '/kh')

        cy.get('.language').should('be.visible')
        cy.get('.contact ').should('be.visible')

        cy.get('.contact ').should('have.attr', 'href', '/kh/contact')
            .click();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多