Ссылка не работает при нажатии Testcafe внутри iframe - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь настроить простую проверку в нашем демонстрационном магазине. Он работает до тех пор, пока не будет нажата ссылка «genomför köp» (совершить покупки). Ссылка помечается как нажатая (изменение цвета), но правильные действия не выполняются, и вы остаетесь на той же стороне. если вы добавите отладочную строку после "await t.click ('# Purchase-button');" Вы можете щелкнуть ссылку вручную, вы можете навести указатель мыши на ссылку, чтобы testcafe ее нашла. Но по какой-то причине click () не работает.

EDIT: 1: я использую ОС WIn10, запускаю testcafe 1.8.2 под phpstorm 2019.3.3 и вызываю его с помощью «testcafe chrome *. js "

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

Ниже приведен соответствующий код, и демонстрационный магазин открыт для использования.

fixture`demoshop.resurs.com`
    .page(https://demoshop.resurs.com);


test(
    'Run: demoshop.resurs.com', async t => {
        await t
            .click('.home-shop-now')
            .click('#root > div > main > div > div.container > div.products-container.mb-60 > div:nth-child(1) > a > img')
            .click('#root > div > main > div > div > div.product-detail__container > div.product-detail__info-container > div.product-detail__add-to-cart > div > button')
            .click('#root > div > main > div > span > header > div > div > div > span.shopping-bag-icon.clickable > div')
            .click('#root > div > main > div > span > div > div > div > div.shopping-cart-container > a');

        await t.switchToIframe('iframe');

        await t.click('#purchase-button');  //This does not work properly

        await t.expect(Selector('h2').innerText).contains('Tack för din order!');


    }
);

1 Ответ

0 голосов
/ 15 мая 2020

Мне удалось воспроизвести проблему с TestCafe@1.8.2, но тест работает как ожидалось с TestCafe@1.8.4.

Я рекомендую вам обновить до последней версии TestCafe и применить изменения, предоставленные @DmitryOstashev:

import { Selector } from 'testcafe';

fixture`demoshop.resurs.com`
    .page('https://demoshop.resurs.com');


test(
    'Run: demoshop.resurs.com', async t => {
        await t
            .click('.home-shop-now')
            .click('#root > div > main > div > div.container > div.products-container.mb-60 > div:nth-child(1) > a > img')
            .click('#root > div > main > div > div > div.product-detail__container > div.product-detail__info-container > div.product-detail__add-to-cart > div > button')
            .click('#root > div > main > div > span > header > div > div > div > span.shopping-bag-icon.clickable > div')
            .click('#root > div > main > div > span > div > div > div > div.shopping-cart-container > a');

        await t.switchToIframe('iframe');

        await t.click('#purchase-button');

        await t.switchToMainWindow();

        await t.expect(Selector('h2').innerText).contains('Tack för din order!');
    }
);
...