(Решено) Использование TestCafe - Как заблокировать показ баннера для мобильного веб-приложения? - PullRequest
0 голосов
/ 06 марта 2020

На тестируемой веб-странице отображается баннер смарт-приложения Apple на устройствах iOS с использованием следующих атрибутов в HTML:

name="apple-itunes-app"
content="app-id=foobar"
rel="manifest"
href="/CompanyName/mobile/include/manifest.json"

Но я не хочу, чтобы это отображалось , Обычно я использовал бы TestCafe Request Mocker, если бы был задействован запрос, но этот баннер, похоже, не использует запрос, он просто появляется! На вкладке Сети нет запросов манифеста.

Как заблокировать баннер смарт-приложения с помощью встроенных функций TestCafe или с помощью любого подходящего пакета Node?

Решение (благодаря @Alex Камаев, помогите):

import { ClientFunction } from 'testcafe';

fixture `fixture`
    .page `http://localhost:8080`;

test.clientScripts({ content: `
    document.querySelector('meta[name="apple-itunes-app"]').remove();
` })(`test`, async t => {
    await t.wait(5000);
});

1 Ответ

2 голосов
/ 11 марта 2020

Вы можете попытаться удалить метатег баннера со своей страницы, используя механизм ClientScripts. Пожалуйста, обратитесь к следующей статье, чтобы узнать подробности: https://devexpress.github.io/testcafe/documentation/using-testcafe/common-concepts/inject-scripts-into-tested-pages.html

Я подготовил пример:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Math Ninja iPhone/iPod Touch Game | Making Addition, Subtraction, Multiplication, and Division Fun!</title>
    <meta name="apple-itunes-app" content="app-id=370144476"/>
    <link rel="stylesheet" type="text/css" href="reset.css"/>
    <link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
</body>
</html>

Код теста:

import { ClientFunction } from 'testcafe';

fixture `fixture`
    .page `http://localhost:8080`;


const removeBanner = ClientFunction(() => {
    var banner = document.querySelector('meta');

    banner.parentNode.removeChild(banner);
});

test.clientScripts({ content: `
    var banner = document.querySelector('meta');

    banner.parentNode.removeChild(banner);
` })(`test`, async t => {
    await t.wait(5000);
});
...