إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
إشعار
الهدف من ميزات المعاينة ليس الاستخدام في الإنتاج وقد يكون لها دالات مقيدة. تتوفر هذه الميزات قبل إصدار رسمي وبذلك يستطيع العملاء الحصول على وصول مبكر وتقديم التعليقات.
Microsoft Power Fx هي لغة قوية منخفضة التعليمات البرمجية مستخدمة Power Apps ، ويمكن توسيعها باستخدام C # لإنشاء وظائف اختبار مخصصة. تشرح هذه المقالة كيفية إنشاء وظيفة C# Power Fx test، مما يوفر تجربة سلسة لكل من الصانعين والمطورين.
يضمن نموذج قابلية التوسعة "بدون منحدرات" لمحرك Power Apps الاختبار أنه يمكن للمستخدمين توسيع قدرات Power Apps محرك الاختبار دون الاصطدام بأي حواجز. يسمح هذا النموذج للمطورين بإنشاء وظائف مخصصة باستخدام 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: استرداد سياق الصفحة ومعالجة مربع حوار الموافقة مع مهلة.