Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Feljegyzés
Az előzetes funkciókat nem célszerű termelési környezetben használni, és előfordulhat, hogy korlátozott funkcionalitással rendelkeznek. Ezek a funkciók a hivatalos kiadás előtt érhetők el, hogy az ügyfelek korán megismerkedhessenek velük, és visszajelzést adhassanak róluk.
Microsoft Power Fx egy hatékony kevés kódolást igénylő nyelv, amelyet a Power Apps C# használatával bővíthet egyéni tesztfüggvények létrehozásához. Ez a cikk azt ismerteti, hogyan hozhat létre C# Power Fx test függvényt, amely zökkenőmentes felhasználói élményt biztosít a készítők és a fejlesztők számára is.
A Test Engine "nincs szikla" bővíthetőségi modellje Power Apps biztosítja, hogy a felhasználók akadályok ütközése nélkül bővíthessék a Power Apps tesztmotor képességeit. Ez a modell lehetővé teszi a fejlesztők számára, hogy egyéni függvényeket hozzanak létre a C# használatával, amelyek integrálhatók Power Fx az összetett forgatókönyvek kezeléséhez.
Tesztmotor modulok
A tesztmotoron belüli tesztmotor-modulok Power Fx a bővíthetőségi modell használatával épülnek fel. A termékkódot példaként használhatja a Test Engine kiterjesztésére.
Példa beleegyezési párbeszédpanelre
Íme egy példa egy Power Fx olyan függvényre, amely a vászonalapú alkalmazás feltételes hozzájárulási párbeszédpanelénekkezeléséhez szükséges kód vázlatát biztosítja.
A hozzájárulási párbeszédpanel egy olyan üzenet, amely megjelenik a felhasználók számára, és engedélyt kér bizonyos erőforrások eléréséhez vagy bizonyos műveletek végrehajtásához. Ez a párbeszédpanel kulcsfontosságú a biztonság fenntartásához és annak biztosításához, hogy a felhasználók tisztában legyenek a nevükben végrehajtott műveletekkel, és elfogadják azokat.
A hozzájárulási párbeszédpanel azért fontos, mert segít megelőzni a jogosulatlan hozzáférést és műveleteket. Biztosítja, hogy a felhasználók tájékozódjanak, és kifejezett hozzájárulásukat adják meg a bizalmas műveletek végrehajtása előtt. Ez olyan esetekben fontos, amikor az alkalmazásnak hozzá kell férnie a felhasználói adatokhoz, vagy műveleteket kell végrehajtania, és ez a feltételes viselkedés hatással lehet az automatizált tesztekre.
A beleegyezési párbeszédpanelekkel kapcsolatos kihívások a tesztelés során
A beleegyezési párbeszédek egyik kihívása, hogy a teszteket nem determinisztikussá tehetik A kérdés feltételesen megjelenhet különböző tényezők, például felhasználói engedélyek vagy korábbi interakciók alapján. Ez a feltételes megjelenés bonyolíthatja a tesztelési folyamatot, mivel a tesztmotornak megfelelően kell kezelnie ezeket a párbeszédablakokat.
A komplexitás absztrakciója Power Fx
Power Fx segít absztrahálni a hozzájárulási párbeszédpanel feltételes várakozásának és szükség esetén a kapcsolatok létrehozásának összetettségét. A készítők egyszerűbb Power Fx és intuitívabb módon határozhatják meg a beleegyezési párbeszédpanelek kezelésének logikáját.
Példa: Hozzájárulási párbeszédpanel kezelése a Power Fx
Íme egy példa a Power Fx hozzájárulási párbeszédpanel kezelésére egy egyéni oldalon:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Ebben a példában a ConsentDialog függvény ellenőrzi, hogy látható-e a hozzájárulási párbeszédpanel. Ha igen, a függvény válaszolhat a tesztfiók hozzájárulását megerősítő párbeszédpanelre. A párbeszédablak kezelése után a rendszer végrehajtja a többi tesztlépést.
Az Table argumentum lehetővé teszi, hogy a hozzájárulási párbeszédpanel várakozási folyamata kilépjen, ha a megadott szöveggel ellátott címke látható.
Tesztfunkciók kiterjesztése Power Fx C használatával#
Az alábbi példa egy minta szerkezeti kódot mutat be, amely kiindulópontként használható a példa befejezéséhez:
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
using Microsoft.Extensions.Logging;
using Microsoft.Playwright;
using Microsoft.PowerApps.TestEngine.Config;
using Microsoft.PowerApps.TestEngine.TestInfra;
using Microsoft.PowerFx;
using Microsoft.PowerFx.Core.Utils;
using Microsoft.PowerFx.Types;
namespace testengine.module
{
/// <summary>
/// This will check the custom pages of a model driven app looking for a consent dialog
/// </summary>
public class ConsentDialogFunction : ReflectionFunction
{
private readonly ITestInfraFunctions _testInfraFunctions;
private readonly ITestState _testState;
private readonly ILogger _logger;
private static TableType SearchType = TableType.Empty()
.Add(new NamedFormulaType("Text", FormulaType.String, displayName: "Text"));
/// <summary>
/// Constructor: Initializes the function with necessary dependencies,
/// including ITestInfraFunctions, ITestState, and ILogger.
/// </summary>
/// <param name="testInfraFunctions">The test infrastructure functions.</param>
/// <param name="testState">The test state.</param>
/// <param name="logger">The logger instance.</param>
public ConsentDialogFunction(ITestInfraFunctions testInfraFunctions,
ITestState testState,
ILogger logger) : base(DPath.Root.Append(
new DName("Preview")),
"ConsentDialog",
FormulaType.Blank,
SearchType)
{
_testInfraFunctions = testInfraFunctions;
_testState = testState;
_logger = logger;
}
/// <summary>
/// Execute Method: Logs the execution and calls the ExecuteAsync
/// method to handle the consent dialog.
/// </summary>
/// <param name="searchFor">The table value to search for.</param>
/// <returns>A blank value.</returns>
public BlankValue Execute(TableValue searchFor)
{
_logger.LogInformation("------------------------------\n\n" +
"Executing ConsentDialog function.");
ExecuteAsync(searchFor).Wait();
return FormulaValue.NewBlank();
}
/// <summary>
/// ExecuteAsync Method: Retrieves the page context and handles the consent dialog with a timeout.
/// </summary>
/// <param name="searchFor">The table value to search for.</param>
/// <returns>A task representing the asynchronous operation.</returns>
private async Task ExecuteAsync(TableValue searchFor)
{
var page = _testInfraFunctions
.GetContext()
.Pages
.Where(p => p.Url.Contains("main.aspx"))
.First();
// ... IPage to handle consent dialog with timeout
}
}
}
ConsentDialogFunction példa magyarázata
-
Névtér és importálások: Importálja a szükséges névtereket és definiálja a
testengine.modulenévteret. -
Osztálydefiníció: Az
ConsentDialogFunctionosztály örökli a ReflectionFunction-t , és meghatározza az egyéni függvénytConsentDialog. -
Konstruktor: Inicializálja a függvényt a szükséges függőségekkel, beleértve
ITestInfraFunctions,ITestState, és ILogger. -
Végrehajtási módszer: Naplózza a végrehajtást, és meghívja a
ExecuteAsyncmetódust a hozzájárulási párbeszédpanel kezeléséhez. - ExecuteAsync metódus: Lekéri az oldal környezetét, és időtúllépéssel kezeli a hozzájárulási párbeszédpanelt.