Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Lưu ý
Các tính năng xem trước không được dùng cho sản xuất và có thể có chức năng bị hạn chế. Những tính năng này khả dụng trước khi có bản phát hành chính thức để khách hàng có thể truy cập sớm và cung cấp phản hồi.
Microsoft Power Fx là ngôn ngữ mã nguồn thấp mạnh mẽ được sử dụng trong Power Apps và có thể được mở rộng bằng C# để tạo các hàm kiểm tra tùy chỉnh. Bài viết này giải thích cách tạo hàm kiểm tra C# Power Fx , mang lại trải nghiệm liền mạch cho cả người tạo và nhà phát triển.
Mô hình mở rộng "không có vách đá" của Test Engine đảm bảo rằng người dùng có thể mở rộng khả năng của Test Engine mà không gặp phải bất kỳ rào cản nào. Power Apps Power Apps Mô hình này cho phép các nhà phát triển tạo các hàm tùy chỉnh bằng C#, có thể được tích hợp vào Power Fx để xử lý các tình huống phức tạp.
Mô-đun Công cụ kiểm tra
Các mô-đun công cụ kiểm tra cho bên trong Công cụ kiểm tra được xây dựng bằng cách sử dụng mô hình khả năng mở rộng. Power Fx Bạn có thể sử dụng mã sản phẩm làm ví dụ về cách mở rộng Test Engine.
Ví dụ hộp thoại đồng ý
Sau đây là ví dụ về Power Fx hàm cung cấp phác thảo mã để xử lý hộp thoại chấp thuận có điều kiện trong ứng dụng canvas.
Hộp thoại đồng ý là lời nhắc xuất hiện với người dùng, yêu cầu họ cấp quyền truy cập vào một số tài nguyên nhất định hoặc thực hiện các hành động cụ thể. Hộp thoại này rất quan trọng để duy trì bảo mật và đảm bảo người dùng biết và đồng ý với các hành động được thực hiện thay mặt họ.
Hộp thoại đồng ý rất quan trọng vì nó giúp ngăn chặn hành động và truy cập trái phép. Nó đảm bảo rằng người dùng được thông báo và cung cấp sự đồng ý rõ ràng trước khi thực hiện bất kỳ hoạt động nhạy cảm nào. Điều này quan trọng trong các tình huống mà ứng dụng cần truy cập dữ liệu người dùng hoặc thực hiện hành động và hành vi có điều kiện này có thể ảnh hưởng đến các bài kiểm tra tự động.
Những thách thức với hộp thoại đồng ý trong quá trình thử nghiệm
Một trong những thách thức với hộp thoại đồng ý là chúng có thể khiến các bài kiểm tra trở nên không xác định. Lời nhắc có thể xuất hiện tùy theo nhiều yếu tố, chẳng hạn như quyền của người dùng hoặc tương tác trước đó. Sự xuất hiện có điều kiện này có thể làm phức tạp quá trình thử nghiệm vì Công cụ thử nghiệm cần xử lý các hộp thoại này một cách phù hợp.
Trừu tượng hóa sự phức tạp với Power Fx
Power Fx giúp tóm tắt sự phức tạp của việc chờ đợi có điều kiện cho hộp thoại đồng ý và tạo kết nối nếu cần. Người tạo có thể sử dụng Power Fx để xác định logic xử lý hộp thoại đồng ý theo cách trực quan và dễ hiểu hơn.
Ví dụ: Xử lý hộp thoại đồng ý với Power Fx
Sau đây là ví dụ về cách sử dụng Power Fx để xử lý hộp thoại đồng ý trong trang tùy chỉnh:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Trong ví dụ này, hàm ConsentDialog kiểm tra xem hộp thoại đồng ý có hiển thị hay không. Nếu đúng như vậy, chức năng này có thể phản hồi hộp thoại xác nhận sự đồng ý cho tài khoản thử nghiệm. Sau khi xử lý xong hộp thoại, các bước kiểm tra còn lại sẽ được thực hiện.
Đối số Table cho phép quá trình chờ hộp thoại đồng ý thoát là nhãn có văn bản được cung cấp có thể nhìn thấy được.
Mở rộng các hàm kiểm tra bằng C# Power Fx
Ví dụ sau đây là một đoạn mã phác thảo mẫu có thể được sử dụng làm điểm khởi đầu để hoàn thành ví dụ này:
// 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
}
}
}
Giải thích ví dụ về ConsentDialogFunction
-
Không gian tên và nhập : Nhập các không gian tên cần thiết và định nghĩa không gian tên
testengine.module. -
Định nghĩa lớp: Lớp
ConsentDialogFunctionkế thừa từ ReflectionFunction và định nghĩa hàm tùy chỉnhConsentDialog. -
Trình xây dựng: Khởi tạo hàm với các phụ thuộc cần thiết, bao gồm
ITestInfraFunctions,ITestStatevà ILogger. -
Phương thức thực thi: Ghi lại quá trình thực thi và gọi phương thức
ExecuteAsyncđể xử lý hộp thoại đồng ý. - Phương thức ExecuteAsync: Truy xuất ngữ cảnh trang và xử lý hộp thoại đồng ý với thời gian chờ.