opomba,
Dostop do te strani zahteva pooblastilo. Poskusite se vpisati alispremeniti imenike.
Dostop do te strani zahteva pooblastilo. Poskusite lahko spremeniti imenike.
opomba,
Test Engine je zastarel in bo odstranjen v prihodnji izdaji. Uporabite Power Platform Playwright vzorce za zmogljivosti avtomatizacije testiranja v Power Platform in Dynamics 365 storitvah.
Microsoft Power Fx je zmogljiv jezik, ki se uporablja v Power Apps, in ga je mogoče razširiti z uporabo C# za ustvarjanje prilagojenih testnih funkcij. V tem članku je razloženo, kako ustvariti testno funkcijo v jeziku C#, ki zagotavlja brezhibno izkušnjo tako za ustvarjalce kot za razvijalce. Power Fx
Model razširljivosti 'no cliffs Power Apps Test Engine zagotavlja, da lahko uporabniki razširijo zmogljivosti Power Apps Test Engine, ne da bi naleteli na ovire. Ta model omogoča razvijalcem ustvarjanje funkcij po meri z uporabo jezika C#, ki jih je mogoče integrirati v Power Fx za obravnavo kompleksnih scenarijev.
Moduli testnega mehanizma
Moduli testnega mehanizma za znotraj testnega mehanizma so zgrajeni z uporabo modela razširljivosti. Power Fx Kodo izdelka lahko uporabite kot primer, kako je mogoče razširiti Test Engine.
Primer pogovornega okna za soglasje
Tukaj je primer funkcije, ki ponuja oris kode za obravnavo pogovornega okna s pogojnim soglasjem v aplikaciji platna. Power Fx
Pogovorno okno za soglasje je poziv, ki se prikaže uporabnikom in jih prosi za dovoljenje za dostop do določenih virov ali izvedbo določenih dejanj. ... To pogovorno okno je ključnega pomena za ohranjanje varnosti in zagotavljanje, da so uporabniki seznanjeni z ukrepi, ki se izvajajo v njihovem imenu, in se z njimi strinjajo.
Pogovorno okno za soglasje je pomembno, ker pomaga preprečiti nepooblaščen dostop in dejanja. Zagotavlja, da so uporabniki obveščeni in dajo svoje izrecno soglasje, preden se izvedejo kakršne koli občutljive operacije. To je pomembno v scenarijih, kjer mora aplikacija dostopati do uporabniških podatkov ali izvajati dejanja in bi to pogojno vedenje lahko vplivalo na avtomatizirane teste.
Izzivi s pogovornimi okni za soglasje pri testiranju
Eden od izzivov pri pogovornih oknih za soglasje je, da lahko teste naredijo nedeterministične. Poziv se lahko pogojno prikaže glede na različne dejavnike, kot so uporabniška dovoljenja ali prejšnje interakcije. Ta pogojni videz lahko oteži postopek testiranja, saj mora testni mehanizem ta pogovorna okna ustrezno obravnavati.
Abstrahiranje kompleksnosti z Power Fx
Power Fx pomaga abstrahirati kompleksnost pogojnega čakanja na pogovorno okno za soglasje in ustvarjanja povezav, če je potrebno. Ustvarjalci lahko z Power Fx določijo logiko za obravnavo pogovornih oken za soglasje na bolj preprost in intuitiven način.
Primer: Obravnavanje pogovornega okna za soglasje z Power Fx
Tukaj je primer uporabe Power Fx za obravnavo pogovornega okna za soglasje na strani po meri:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
V tem primeru funkcija ConsentDialog preveri, ali je pogovorno okno za soglasje vidno. Če je tako, se lahko funkcija odzove na pogovorno okno, ki potrjuje soglasje za testni račun. Ko je dialog obdelan, se izvedejo preostali koraki testiranja.
Argument Table omogoča izhod iz procesa čakanja v pogovornem oknu za soglasje, če je vidna oznaka z navedenim besedilom.
Razširitev testnih funkcij z uporabo C# Power Fx
Naslednji primer je vzorčna orisna koda, ki bi jo lahko uporabili kot izhodišče za dokončanje tega primera:
// 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
}
}
}
Primer razlage funkcije ConsentDialogFunction
-
Imenski prostor in uvozi: Uvozi potrebne imenske prostore in definira imenski prostor
testengine.module. -
Definicija razreda: Razred
ConsentDialogFunctiondeduje od ReflectionFunction in definira funkcijo po meriConsentDialog. -
Konstruktor: Inicializira funkcijo s potrebnimi odvisnostmi, vključno z
ITestInfraFunctions,ITestStatein ILogger. -
Metoda izvajanja: Zabeleži izvajanje in pokliče metodo
ExecuteAsyncza obravnavo pogovornega okna za soglasje. - Metoda ExecuteAsync: Pridobi kontekst strani in obravnava pogovorno okno za soglasje s časovno omejitvijo.