Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Σημείωμα
Οι λειτουργίες προεπισκόπησης δεν προορίζονται για παραγωγική χρήση και ενδέχεται να έχουν περιορισμένη λειτουργικότητα. Αυτές οι δυνατότητες είναι διαθέσιμες πριν από μια επίσημη κυκλοφορία έτσι ώστε οι πελάτες να έχουν πρόσβαση από νωρίς και να κάνουν σχόλια.
Microsoft Power Fx είναι μια ισχυρή γλώσσα χαμηλού κώδικα που χρησιμοποιείται σε Power Apps, και μπορεί να επεκταθεί χρησιμοποιώντας C# για τη δημιουργία προσαρμοσμένων συναρτήσεων δοκιμής. Αυτό το άρθρο εξηγεί πώς να δημιουργήσετε μια συνάρτηση C# Power Fx test, παρέχοντας μια απρόσκοπτη εμπειρία τόσο για τους κατασκευαστές όσο και για τους προγραμματιστές.
Το μοντέλο επεκτασιμότητας «χωρίς γκρεμούς» του Power Apps Test Engine διασφαλίζει ότι οι χρήστες μπορούν να επεκτείνουν τις δυνατότητες του Power Apps Test Engine χωρίς να χτυπήσουν κανένα εμπόδιο. Αυτό το μοντέλο επιτρέπει στους προγραμματιστές να δημιουργούν προσαρμοσμένες συναρτήσεις χρησιμοποιώντας C#, οι οποίες μπορούν να ενσωματωθούν για Power Fx να χειριστούν πολύπλοκα σενάρια.
Μονάδες κινητήρα δοκιμής
Οι μονάδες κινητήρα δοκιμής για Power Fx το εσωτερικό του μηχανισμού δοκιμής κατασκευάζονται χρησιμοποιώντας το μοντέλο επεκτασιμότητας. Μπορείτε να χρησιμοποιήσετε τον κωδικό προϊόντος ως παραδείγματα του τρόπου επέκτασης του μηχανισμού δοκιμής.
Παράδειγμα διαλόγου συγκατάθεσης
Ακολουθεί ένα παράδειγμα μιας Power Fx συνάρτησης που παρέχει το περίγραμμα κώδικα για το χειρισμό ενός παραθύρου διαλόγου συγκατάθεσης υπό όρους σε μια εφαρμογή καμβά.
Ένα παράθυρο διαλόγου συγκατάθεσης είναι ένα μήνυμα που εμφανίζεται στους χρήστες, ζητώντας την άδειά τους για πρόσβαση σε ορισμένους πόρους ή εκτέλεση συγκεκριμένων ενεργειών. Αυτός ο διάλογος είναι ζωτικής σημασίας για τη διατήρηση της ασφάλειας και τη διασφάλιση ότι οι χρήστες γνωρίζουν και συμφωνούν με τις ενέργειες που αναλαμβάνονται για λογαριασμό τους.
Το παράθυρο διαλόγου συγκατάθεσης είναι σημαντικό επειδή βοηθά στην αποτροπή μη εξουσιοδοτημένης πρόσβασης και ενεργειών. Διασφαλίζει ότι οι χρήστες ενημερώνονται και παρέχουν τη ρητή συγκατάθεσή τους πριν από την εκτέλεση ευαίσθητων λειτουργιών. Αυτό είναι σημαντικό σε σενάρια όπου η εφαρμογή πρέπει να αποκτήσει πρόσβαση σε δεδομένα χρήστη ή να εκτελέσει ενέργειες και αυτή η συμπεριφορά υπό όρους θα μπορούσε να επηρεάσει τις αυτοματοποιημένες δοκιμές.
Προκλήσεις με διαλόγους συγκατάθεσης κατά τη δοκιμή
Μία από τις προκλήσεις με τους διαλόγους συγκατάθεσης είναι ότι μπορούν να κάνουν τις δοκιμές μη ντετερμινιστικές. Η ερώτηση μπορεί να εμφανιστεί υπό όρους με βάση διάφορους παράγοντες, όπως δικαιώματα χρήστη ή προηγούμενες αλληλεπιδράσεις. Αυτή η εμφάνιση υπό όρους μπορεί να περιπλέξει τη διαδικασία δοκιμής, καθώς ο μηχανισμός δοκιμής πρέπει να χειριστεί κατάλληλα αυτούς τους διαλόγους.
Αφηρημένη πολυπλοκότητα με Power Fx
Power Fx Βοηθά στην αφαίρεση της πολυπλοκότητας της υπό όρους αναμονής για το παράθυρο διαλόγου συγκατάθεσης και της δημιουργίας συνδέσεων, εάν χρειάζεται. Οι δημιουργοί μπορούν να χρησιμοποιήσουν Power Fx για να καθορίσουν τη λογική για το χειρισμό των διαλόγων συγκατάθεσης με πιο απλό και διαισθητικό τρόπο.
Παράδειγμα: Παράθυρο διαλόγου χειρισμού συγκατάθεσης με Power Fx
Ακολουθεί ένα παράδειγμα χρήσης Power Fx για το χειρισμό ενός παραθύρου διαλόγου συγκατάθεσης σε μια προσαρμοσμένη σελίδα:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Σε αυτό το παράδειγμα, η ConsentDialog συνάρτηση ελέγχει εάν το παράθυρο διαλόγου συγκατάθεσης είναι ορατό. Εάν είναι, η λειτουργία μπορεί να ανταποκριθεί στο παράθυρο διαλόγου που επιβεβαιώνει τη συγκατάθεση για τον δοκιμαστικό λογαριασμό. Μόλις γίνει χειρισμός του διαλόγου, εκτελούνται τα υπόλοιπα βήματα δοκιμής.
Το Table όρισμα επιτρέπει την έξοδο από τη διαδικασία αναμονής του διαλόγου συγκατάθεσης είναι μια ετικέτα με ορατό το παρεχόμενο κείμενο.
Επέκταση Power Fx των λειτουργιών δοκιμής χρησιμοποιώντας C#
Το ακόλουθο παράδειγμα είναι ένα δείγμα κώδικα διάρθρωσης που θα μπορούσε να χρησιμοποιηθεί ως σημείο εκκίνησης για την ολοκλήρωση αυτού του παραδείγματος:
// 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
-
Χώρος ονομάτων και εισαγωγές: Εισάγει απαραίτητους χώρους ονομάτων και ορίζει τον
testengine.moduleχώρο ονομάτων. -
Ορισμός κλάσης: Η κλάση κληρονομείται από
ConsentDialogFunctionτο ReflectionFunction και ορίζει την προσαρμοσμένη συνάρτησηConsentDialog. -
Κατασκευαστής: Αρχικοποιεί τη συνάρτηση με τις απαραίτητες εξαρτήσεις, συμπεριλαμβανομένων των
ITestInfraFunctions,,ITestStateκαι ILogger. -
Μέθοδος εκτέλεσης: Καταγράφει την εκτέλεση και καλεί τη
ExecuteAsyncμέθοδο χειρισμού του διαλόγου συγκατάθεσης. - Μέθοδος ExecuteAsync: Ανακτά το περιβάλλον της σελίδας και χειρίζεται το παράθυρο διαλόγου συγκατάθεσης με χρονικό όριο.