Мне нужно получить доступ к новому окну, которое появляется после нажатия кнопки - PullRequest
0 голосов
/ 15 февраля 2019

Кто-нибудь может помочь?

Вот проблема, которую я не могу решить.

Мне нужно получить доступ к новому окну, которое появляется после нажатия кнопки.

Я использовал cy.get ('. App-card__content'). Click (), чтобы нажать на кнопку под названием Создать новый плагин.После того, как я нажимаю на кнопку, приложение создается в новом окне, и я не знаю, как получить окно и продолжить мой тест.

URL этого нового окна является динамическим, и каждый раз, когда кто-то нажимает на него, номеркоторый ID приложения увеличивается.

Например.> https://www.website.io/apps/app_name/standalone?id=DYNAMIC_ID_NUMBER

Мне удалось зайти на сайт и создать новое приложение, однако я не знаю, как получить новое окно с URL-адресом.

Извините, но яЯ использую Cypress всего 2 дня, и это вопрос новичка, которого я знаю.

Любая помощь более чем приветствуется.

Приветствия.

Я не смог получить этот кодработа:

describe('window open', function () {
  beforeEach(function () {
    cy.visit('/index.html', {
      onBeforeLoad(win) {
        cy.stub(win, 'open').as('windowOpen')
      }
    })
  })

  it('see window open being called with url', function () {
    cy.get('#open-window').click()

    cy.get('@windowOpen').should('be.calledWith', 'page1.html')
  })
})


Here is the code I wrote:

// This test consists of Accessing Staging and Create a new App.
// Go to website.io.
describe('Staging Test v1', function(){
    it('Accessing Staging', function(){
        cy.visit('https://www.website.io')
        cy.wait(2000)
    })

    // Get login button.
    it('Get login button', function(){
        cy.get('.signed-out-container > .signInTab').click()
        cy.wait(2000)
    })

    // Fill out the modal and log in
    it('Fill out the modal and log in', function(){
        cy.get('#sign_in_email').type('user@website.io', {delay:110}).should('have.value', 'user@website.io')
        cy.wait(1000)

        cy.get('#new_sign_in_password').type('password', {delay:110}).should('have.value', 'password')
        cy.wait(1000)

        cy.get('#sign-in-submit').click()
        cy.wait(6000)
    })

    // Click on new Create New Plugin button.
    it('Click on create a new plugin button', function(){
        cy.get('.dashboard-header__create-new-container > .button').should('be.visible').click({force:true})
        cy.wait(2000)
    })

    // Search and create a new App
    it('Search and create a new App', function(){

        cy.get('.app-search__search-input').click({force:true}).type('App name', {force:true})
        cy.wait(3000)
        cy.get('.app-card__content').click()
        cy.wait(10000)
    })

    // Grab the new window to continue the test

    // Need to find out how to grab the new window passing along cookies and sessions to remain logged in.

    // Develop part 2 of the test


})

Мне нужно создать новое приложение, которое появляется в новом окне, захватить новое окно и продолжить оставшуюся часть теста.

Мне также нужно оставаться в системев новом окне, как мне нужно, чтобы сохранить приложение.

1 Ответ

0 голосов
/ 18 февраля 2019

Насколько я знаю, вы не можете обрабатывать более одной вкладки / окна в тесте Cypress.Просто взгляните на эту часть документации:

https://docs.cypress.io/guides/references/trade-offs.html#Multiple-tabs

Когда я сталкивался с этим, я использовал обходные пути, которые они предлагают для этого, поэтому у вас нет необходимости 'захватить другие окна;Если вы можете, перейдите к этому:

// We can remove the offending attribute - target='_blank'
// that would normally open content in a new tab.
  cy.get('.app-card__content').invoke('removeAttr', 'target').click()

Конечно, вы можете использовать это, только если ваш элемент имеет этот атрибут.

Посмотрите на другие решения, которые они предоставляют для этоготема: https://github.com/cypress-io/cypress-example-recipes/blob/master/examples/testing-dom__tab-handling-links/cypress/integration/tab_handling_anchor_links_spec.js

...