Функции Power Fx в Power Apps Test Engine (не рекомендуется к использованию)

Замечание

Модуль тестирования устарел и будет удален в будущем выпуске. Используйте примеры 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")

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

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

Замечание

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

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

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

Вызов пользовательского запроса 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 test run
Описание: Функция Preview.Pause не может открыть инспектор во время pac test run.
Обходной путь: Версия тестового движка с открытым исходным кодом может быть использована для реализации функции паузы.

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

Preview.Pause()

Preview.SelectControl

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

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

Пример Preview.SelectControl

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

Preview.SelectControl(Button3,1);

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

Preview.PlaywrightAction(Text, Text)

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

Примеры использования Preview.PlaywrightAction

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

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

Preview.PlaywrightActionValue(Text, Text, Text)

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

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

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

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

Preview.PlaywrightScript(Text)

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

Замечание

Эта функция реализована только для отладочной сборки из версии Test Engine с открытым исходным кодом, не входящей в pac test run.

Пример 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"
    }
    )
});

Моделирование Dataverse и соединителей с помощью Test Engine (не рекомендуется к использованию)