إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ملحوظة
تم إهمال محرك الاختبار وسيتم إزالته في إصدار مستقبلي. استخدم Power Platform Playwright samples لقدرات أتمتة الاختبار في Power Platform وخدمات Dynamics 365.
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: تسترد سياق الصفحة وتتعامل مع مربع حوار الموافقة مع مهلة.