Nata
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti prisijungti arba pakeisti katalogus.
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti pakeisti katalogus.
Pastaba.
Peržiūros funkcijos nėra skirtos naudoti gamybai ir gali būti apribotas jų funkcionalumas. Šias funkcijas galima naudoti prieš oficialų išleidimą, kad klientai galėtų gauti ankstyvą prieigą ir pateikti atsiliepimų.
Microsoft Power Fx yra galinga žemo kodo kalba, naudojama Power Apps ir ją galima išplėsti naudojant C#, kad būtų sukurtos pasirinktinės bandymo funkcijos. Šiame straipsnyje paaiškinama, kaip sukurti C# Power Fx test funkciją, suteikiant sklandžią patirtį tiek kūrėjams, tiek kūrėjams.
"Test Engine" išplėtimo modelis Power Apps "no cliffs" užtikrina, kad naudotojai galėtų išplėsti bandomojo variklio galimybes Power Apps neatsitrenkdami į jokias kliūtis. Šis modelis leidžia kūrėjams kurti pasirinktines funkcijas naudojant C#, kurias galima integruoti Power Fx į sudėtingus scenarijus.
Bandomieji variklio moduliai
Bandymo variklio moduliai , skirti Power Fx bandomojo variklio viduje, yra sukurti naudojant išplėtimo modelį. Produkto kodą galite naudoti kaip pavyzdį, kaip galima išplėsti bandomąjį variklį.
Sutikimo dialogo pavyzdys
Čia pateikiamas funkcijos, Power Fx kuri pateikia kodo struktūrą, kad drobės programoje būtų galima tvarkyti sąlyginio sutikimo dialogo langą, pavyzdys.
Sutikimo dialogo langas yra vartotojams rodomas raginimas, kuriame prašoma jų leidimo pasiekti tam tikrus išteklius arba atlikti konkrečius veiksmus. Šis dialogo langas yra labai svarbus siekiant išlaikyti saugumą ir užtikrinti, kad vartotojai žinotų apie veiksmus, kurių imamasi jų vardu, ir su jais sutiktų.
Sutikimo dialogo langas yra svarbus, nes padeda apsisaugoti nuo neteisėtos prieigos ir veiksmų. Taip užtikrinama, kad naudotojai būtų informuoti ir duotų aiškų sutikimą prieš atliekant bet kokias neskelbtinas operacijas. Tai svarbu tais atvejais, kai programai reikia pasiekti naudotojo duomenis arba atlikti veiksmus, o šis sąlyginis elgesys gali turėti įtakos automatiniams bandymams.
Iššūkiai, susiję su sutikimo dialogais testuojant
Vienas iš sutikimo dialogų iššūkių yra tas, kad jie gali padaryti testus nedeterministinius. Raginimas gali būti sąlyginai rodomas atsižvelgiant į įvairius veiksnius, pvz., vartotojo leidimus arba ankstesnes sąveikas. Ši sąlyginė išvaizda gali apsunkinti bandymo procesą, nes bandomasis variklis turi tinkamai tvarkyti šiuos dialogus.
Abstrakcija sudėtinga su Power Fx
Power Fx padeda abstrahuoti sąlyginai laukiant sutikimo dialogo lango ir, jei reikia, kuriant ryšius. Kūrėjai gali apibrėžti Power Fx sutikimo dialogų tvarkymo logiką paprasčiau ir intuityviau.
Pavyzdys: sutikimo dialogo lango tvarkymas naudojant Power Fx
Štai pavyzdys, kaip tvarkyti Power Fx sutikimo dialogo langą pasirinktiniame puslapyje:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Šiame pavyzdyje funkcija tikrina, ConsentDialog ar matomas sutikimo dialogo langas. Jei taip, funkcija gali atsakyti į dialogo langą, patvirtinantį sutikimą bandomajai paskyrai. Kai dialogo langas bus apdorotas, bus atlikti likę bandymo veiksmai.
Argumentas Table leidžia išeiti sutikimo dialogo lango laukimo procesui yra etiketė su pateiktu tekstu.
Bandymo funkcijų išplėtimas Power Fx naudojant C#
Toliau pateiktas pavyzdys yra struktūros kodo pavyzdys, kurį galima naudoti kaip pradinį tašką šiam pavyzdžiui užbaigti:
// 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 paaiškinimo pavyzdys
-
Vardų sritis ir importavimas: importuojamos būtinos vardų sritys ir apibrėžiamos
testengine.modulevardų sritys. -
Klasės apibrėžimas: klasė
ConsentDialogFunctionpaveldi iš ReflectionFunction ir apibrėžia pasirinktinę funkcijąConsentDialog. -
Konstruktorius: inicijuoja funkciją su būtinomis priklausomybėmis, įskaitant
ITestInfraFunctionsITestStateir ILogger. -
Vykdymo metodas: registruoja vykdymą ir iškviečia
ExecuteAsyncsutikimo dialogo lango tvarkymo būdą. - ExecuteAsync metodas: gauna puslapio kontekstą ir tvarko sutikimo dialogo langą su skirtuoju laiku.