Движок тестирования Power Apps, функции Power Fx (не рекомендуется)

Замечание

Модуль тестирования устарел и будет удален в будущем выпуске. Используйте примеры Power Platform Playwright для возможностей автоматизации тестирования в службах Power Platform и Dynamics 365.

Тестовый движок использует следующие существующие функции PowerFx:

Эти функции доступны для использования только в тестовом движке:

Тестовый движок предоставляет следующие функции предварительного просмотра:

Тестовые функции двигателя

Эти функции доступны только для использования с тестовым движком.

Screenshot

Screenshot(fileNameOfScreenshot)

Эта функция делает снимок экрана приложения в текущий момент времени. Файл снимка экрана сохраняется в выходной тестовой папке с указанным именем.

Замечание

Поддерживаются только файлы jpeg и png.

Пример скриншота

Screenshot("buttonClicked.png")

Wait

Wait(Control, Property, Value)

Эта функция ожидает, пока свойство элемента управления станет равным указанному значению.

Подождите пример

Wait(Label1, "Text", "0")

Функции предварительного просмотра

Следующие функции могут быть опционально включены в тесты, добавив Preview в allowPowerFxNamespaces список в свойстве extensionModules свойства testSettings при использовании пространства имен Power Fx Preview.

Замечание

  • Функции предварительного просмотра могут быть изменены. По мере того, как эти функции становятся готовыми к более широкому использованию, считается, что они перемещаются в пространство имен TestEngine .
  • Вы можете использовать определяемые пользователем функции для обертывания Preview функций, чтобы упростить миграцию на непредварительные версии функций.
  • Вы могли бы заставить модель возвращать только JSON-объект, который можно было бы проанализировать с помощью функции ParseJSON .

Предварительный просмотр.AIExecutePrompt

Preview.AIExecutePrompt(Name, {Property: Type})

Вызовите запрос Custom AI Builder и получите текстовые результаты выполнения.

Замечание

Ознакомьтесь с разделом Dataverse Интеграция ИИ для получения информации о доступности и настройке этой функции.

Просмотрите раздел Использование Preview.AIExecutePrompt для получения более подробной информации и описания использования этой функции.

Пример Preview.AIExecutePrompt

В следующем примере вызывается запрос ИИ с именем Country Capital со значением параметра Country и ожидается, что выполнение модели вернет одно слово Paris

Assert("Paris" = Preview.AIExecutePrompt("Country Capital", { Country: "France" }).Text)

Preview.ConsentDialog

Preview.ConsentDialog(Table({Text: Text}));

Дождитесь подтверждения диалогового окна согласия для пользовательской страницы приложения на основе холста или приложения на основе модели

Пример Preview.ConsentDialog

Preview.ConsentDialog(Table({Text: "Your Dialog Title"}));

Предпросмотр.Пауза

Preview.Pause()

Приостановите тест и отобразите Playwright Inspector, если выполняется интерактивный тест

Замечание

Известная проблема: Функция Preview.Pause некорректно открывает инспектор для тестового запуска PAC.
Описание: Функция Preview.Pause не может открыть инспектор во время pac test run.
Обходной путь: Версия тестового движка с открытым исходным кодом может быть использована для реализации функции паузы.

Пример предварительного просмотра.Пауза

Preview.Pause()

Предварительный просмотр.Выбор элемента управления

Preview.SelectControl(Control: ControlName, Index: Number)

Выберите элемент управления с помощью объектной модели документа

Пример Preview.SelectControl

Выберите первое Button3 совпадение

Preview.SelectControl(Button3,1);

Предварительный просмотр.PlaywrightAction

Preview.PlaywrightAction(Text, Text)

Выполнить действие на текущей странице с помощью Playwright CSS или XPath Locator

Примеры действий предварительного просмотра Playwright

Preview.PlaywrightAction("//button", "click");
Preview.PlaywrightAction("//button", "exists");
Preview.PlaywrightAction("//button", "wait");

Предварительный просмотр.PlaywrightActionValue

Preview.PlaywrightActionValue(Text, Text, Text)

Выполнить действие на текущей странице, используя Playwright CSS или XPath Locator со значением

Примеры предварительного просмотра PlaywrightActionValue

Preview.PlaywrightAction("//input[@data-id='1']", "fill", "Hello");

Предварительный просмотр.PlaywrightScript

Preview.PlaywrightScript(Text)

Выполнить скрипт C# на текущей странице

Замечание

Эта функция реализована только для сборки для отладки из открытый код версии Тестового Движка, а не в pac тестовом запуске.

Пример Preview.PlaywrightScript

Preview.PlaywrightScript("sample.csx")

Содержимое sample.csx похоже на этот код:

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

#r "Microsoft.Playwright.dll"
#r "Microsoft.Extensions.Logging.dll"
using Microsoft.Playwright;
using Microsoft.Extensions.Logging;
using System.Linq;
using System.Threading.Tasks;

public class PlaywrightScript {
    public static void Run(IBrowserContext context, ILogger logger) {
        Execute(context, logger).Wait();
    }

    public static async Task Execute(IBrowserContext context, ILogger logger) {
        var page = context.Pages.First();

        if ( page.Url == "about:blank" ) {
            var nextPage = context.Pages.Skip(1).First();
            await page.CloseAsync();
            page = nextPage;
        }

        foreach ( var frame in page.Frames ) {
            if ( await frame.Locator("button:has-text('Button')").CountAsync() > 0 ) {
                await frame.ClickAsync("button:has-text('Button')");
            }
        }
    }
}

Preview.SimulateConnector

Preview.SimulateConnector({name: Text, then: Record})

При вызове из Power Apps к типу соединителя, найденному в Список всех соединителей Power Apps

Пример Preview.SimulateConnector

Preview.SimulateConnector({
   name: "msnweather", 
   then: {responses: { 
      daily: { 
         day: { 
            summary: "You are seeing the mock response" }
            }
         }
      }
   })

Preview.SimulateDataverse

Preview.SimulateDataverse({Action: Text, Entity: Text, Then: Table})

Пример Preview.SimulateDataverse

В этом примере, когда выполняется вызов для запроса объекта Dataverse с логическим именем sample_combotable, он возвращает записи с помощью Table функции.

Preview.SimulateDataverse({
    Action: "Query",
    Entity: "sample_combotable",
    Then: Table(
    {
        'sample_name': "Item 1",
        'sample_id': 3,
        'sample_combotableid': "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        'createdon': "2024-12-02T17:52:45Z"
    },
    {
        'sample_name': "RR2",
        'sample_id': 4,
        'sample_combotableid': "bbbbbbbb-1111-2222-3333-cccccccccccc",
        'createdon': "2024-12-02T17:54:45Z"
    },
        {
        'sample_name': "RR3",
        'sample_id': 5,
        'sample_combotableid': "cccccccc-2222-3333-4444-dddddddddddd",
        'createdon': "2024-12-02T17:54:45Z"
    }
    )
});

Моделирование данных и соединителя с помощью модуля тестирования (не рекомендуется)