Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Funkce Preview nejsou určené pro normální používání a mohou mít omezené fungování. Jsou to funkce, které jsou poskytnuté před svým oficiálním vydáním, aby si je zákazníci mohli co nejdříve vyzkoušet a mohli nám napsat své názory.
Microsoft Power Fx je výkonný nízkokódový jazyk používaný v Power Apps, který lze rozšířit pomocí C# pro vytváření vlastních testovacích funkcí. Tento článek vysvětluje, jak vytvořit testovací funkci v jazyce C# a jak zajistit bezproblémové prostředí pro tvůrce i vývojáře. Power Fx
Model rozšiřitelnosti „bez útesů“ testovacího enginu zajišťuje, že uživatelé mohou rozšiřovat jeho funkce bez jakýchkoli překážek. Power Apps Power Apps Tento model umožňuje vývojářům vytvářet vlastní funkce pomocí jazyka C#, které lze integrovat do systému pro zpracování složitých scénářů. Power Fx
Moduly testovacího enginu
Moduly testovacího enginu pro uvnitř Test Engine jsou vytvořeny s využitím modelu rozšiřitelnosti. Power Fx Kód produktu můžete použít jako příklad rozšíření Test Engine.
Příklad dialogového okna pro souhlas
Zde je příklad funkce, která poskytuje osnovu kódu pro zpracování dialogového okna podmíněného souhlasu v aplikaci typu canvas. Power Fx
Dialogové okno pro souhlas je výzva, která se zobrazuje uživatelům a žádá je o povolení k přístupu k určitým zdrojům nebo k provedení konkrétních akcí. ... Tento dialog je klíčový pro udržení bezpečnosti a zajištění toho, aby si uživatelé byli vědomi akcí prováděných v jejich zastoupení a souhlasili s nimi.
Dialogové okno pro souhlas je důležité, protože pomáhá předcházet neoprávněnému přístupu a akcím. Zajišťuje, aby byli uživatelé informováni a poskytli svůj výslovný souhlas před provedením jakýchkoli citlivých operací. To je důležité v situacích, kdy aplikace potřebuje přístup k uživatelským datům nebo provádět akce a toto podmíněné chování by mohlo ovlivnit automatizované testy.
Problémy s dialogovými okny souhlasu v testování
Jednou z výzev u dialogových oken pro získání souhlasu je, že mohou způsobit, že testy budou nedeterministické. Výzva se může podmíněně zobrazovat na základě různých faktorů, jako jsou například uživatelská oprávnění nebo předchozí interakce. Toto podmíněné zobrazení může zkomplikovat proces testování, protože testovací engine musí tyto dialogy vhodně zpracovat.
Abstrahování složitosti pomocí Power Fx
Power Fx pomáhá zjednodušit složitost podmíněného čekání na dialogové okno souhlasu a v případě potřeby vytvářet propojení. Tvůrci mohou použít Power Fx k definování logiky pro zpracování dialogových oken pro souhlas jednodušším a intuitivnějším způsobem.
Příklad: Zpracování dialogového okna pro souhlas s Power Fx
Zde je příklad použití Power Fx k odeslání dialogového okna souhlasu na vlastní stránce:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
V tomto příkladu funkce ConsentDialog zkontroluje, zda je dialogové okno souhlasu viditelné. Pokud ano, funkce může reagovat na dialogové okno potvrzující souhlas s testovacím účtem. Jakmile je dialog zpracován, provedou se zbývající testovací kroky.
Argument Table umožňuje ukončení procesu čekání na dialogové okno souhlasu, pokud je viditelný popisek se zadaným textem.
Rozšíření testovacích funkcí pomocí C# Power Fx
Následující příklad je vzorový kód osnovy, který by mohl sloužit jako výchozí bod pro dokončení tohoto příkladu:
// 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
}
}
}
Vysvětlení příkladu ConsentDialogFunction
-
Jmenný prostor a import: Importuje potřebné jmenné prostory a definuje jmenný prostor
testengine.module. -
Definice třídy: Třída
ConsentDialogFunctiondědí z třídy ReflectionFunction a definuje vlastní funkciConsentDialog. -
Konstruktor: Inicializuje funkci s nezbytnými závislostmi, včetně
ITestInfraFunctions,ITestStatea ILogger. -
Metoda spuštění: Zaznamená spuštění a zavolá metodu
ExecuteAsyncpro zpracování dialogového okna souhlasu. - Metoda ExecuteAsync: Načte kontext stránky a zpracuje dialogové okno souhlasu s časovým limitem.