Freigeben über


Power Apps Test Engine – Power Fx-Funktionen (Vorschauversion)

Notiz

Previewfunktionen sind nicht für den Produktionseinsatz gedacht und können eine eingeschränkte Funktionalität aufweisen. Diese Funktionen stehen vor dem offiziellen Release zur Verfügung, damit Kunden früher Zugriff darauf erhalten und Feedback geben können.

Die Test Engine verwendet die folgenden vorhandenen PowerFx-Funktionen:

Diese Funktionen stehen nur in der Test-Engine zur Verfügung:

Test Engine bietet die folgenden Vorschaufunktionen:

Funktionen für Test Engine

Diese Funktionen stehen nur in der Test-Engine zur Verfügung

Screenshot

Screenshot(fileNameOfScreenshot)

Diese Funktion erfasst einen Screenshot der App zum aktuellen Zeitpunkt. Die Screenshot-Datei wird im Testausgabeordner und unter dem angegebenen Namen gespeichert.

Notiz

Es werden nur JPEG- und PNG-Dateien unterstützt.

Screenshot-Beispiel

Screenshot("buttonClicked.png")

Warten

Wait(Control, Property, Value)

Diese Funktion wartet darauf, dass die Eigenschaft des Steuerelements dem angegebenen Wert entspricht.

Warte-Beispiel

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

Vorschau-Funktionen

Die folgenden Funktionen können optional in Tests eingeschlossen werden, wenn der Power Fx Vorschau-Namespace verwendet wird, indem Preview der allowPowerFxNamespaces Liste in der extensionModules Eigenschaft der testSettings hinzugefügt wird.

Notiz

  • Vorschaufunktionen können sich ändern. Wenn diese Funktionen für eine breitere Verwendung bereit sind, wird in Betracht gezogen, sie innerhalb des TestEngine Namespace zu verschieben.
  • Sie können benutzerdefinierte Funktionen verwenden, um Preview Funktionen zu verpacken, um die Migration zu Nicht-Vorschauversionen der Funktion zu vereinfachen.
  • Sie könnten festlegen, dass das Modell nur ein JSON-Objekt zurückgibt, das Sie mit der ParseJSON Funktion analysieren können.

Preview.AIExecutePrompt

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

Rufen Sie eine benutzerdefinierte AI Builder Eingabeaufforderung auf, und rufen Sie die Textergebnisse der Ausführung ab.

Notiz

Im Abschnitt Dataverse KI-Integration finden Sie Informationen zur Verfügbarkeit und Konfiguration dieser Funktion.

Weitere Details und Beschreibungen zur Verwendung dieser Funktion finden Sie unter Verwenden von Preview.AIExecutePrompt.

Preview.AIExecutePrompt(Beispiel)

Im folgenden Beispiel wird die KI-Eingabeaufforderung mit dem Namen Country Capital mit dem Parameterwert Country aufgerufen, und es wird erwartet, dass die Modellausführung das einzelne Wort Paris zurückgibt.

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

Preview.ConsentDialog

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

Warten auf die Bestätigung eines Zustimmungsdialogfelds für eine Canvas-App oder eine modellgesteuerte App auf einer benutzerdefinierten Seite

Preview.ConsentDialog-Beispiel

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

Preview.Pause

Preview.Pause()

Pausieren Sie den Test und zeigen Sie den Playwright-Inspektor an, wenn Sie einen interaktiven Test ausführen

Notiz

Bekanntes Problem: Die Preview.Pause-Funktion öffnet den Inspektor für den PAC-Testlauf nicht ordnungsgemäß
Beschreibung: Die Preview.Pause Funktion kann den Inspektor während eines pac test run Vorgangs nicht öffnen.
Problemumgehung: Die Open-Source-Version der Test Engine kann für die Pausierungsfunktion verwendet werden.

Preview.Pause(Beispiel)

Preview.Pause()

Preview.SelectControl

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

Wählen Sie ein Steuerelement mithilfe des Dokumentobjektmodells aus

Preview.SelectControl-Beispiel

Wählen Sie zuerst Button3 Übereinstimmung

Preview.SelectControl(Button3,1);

Preview.PlaywrightAction

Preview.PlaywrightAction(Text, Text)

Führen Sie eine Aktion auf der aktuellen Seite mithilfe eines Playwright CSS oder XPath Locators aus

Preview.PlaywrightAction Examples

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

Preview.PlaywrightActionValue

Preview.PlaywrightActionValue(Text, Text, Text)

Führen Sie eine Aktion auf der aktuellen Seite mithilfe eines Playwright CSS oder XPath Locators mit einem Wert aus

Preview.PlaywrightActionValue-Beispiele

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

Preview.PlaywrightScript

Preview.PlaywrightScript(Text)

Führt das C#-Skript auf der aktuellen Seite aus

Notiz

Diese Funktion ist nur für den Debug-Build aus der Open-Source-Version der Test Engine implementiert, die sich nicht im pac-Testlauf befindet.

Preview.PlaywrightScript-Beispiel

Preview.PlaywrightScript("sample.csx")

Mit einem Inhalt, der sample.csx diesem Code ähnlich ist:

// 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})

Wenn ein Anruf von Power Apps zu einem Konnektortyp erfolgt, der aus der Liste aller Konnektoren Power Apps gefunden wurde

Preview.SimulateConnector-Beispiel

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-Beispiel

Wenn ein Aufruf zum Abfragen der Dataverse Entität mit logischem Namen erfolgt sample_combotable werden in diesem Beispiel die Datensätze zurückgegeben, die die Tabellen-Funktion verwenden

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 und Konnektor-Simulation mit Test Engine (Vorschauversion)