gpt4 book ai didi

c# - 如何正确声明类变量(CUIT 控件)

转载 作者:行者123 更新时间:2023-11-30 17:27:50 25 4
gpt4 key购买 nike

我正在为 WPF 应用程序设置编码的 UI 测试,我想使用代码方法而不是记录和生成代码方法。我想通过代码使用页面对象,我需要在页面对象中声明控件(按钮、选项卡等)变量,这些变量将被多个函数使用。

我尝试在类中声明变量并在构造函数中添加属性 (pendingButton1)并创建返回控件的函数并分配给类中的变量 (pendingButton2),但均无效。

当我在要在(pendingButton3 和 4)中使用变量的函数中声明变量(或通过函数创建变量)时,它会起作用。

public partial class Press : Header
{
WpfToggleButton pendingButton1 = new WpfToggleButton(_wpfWindow);
WpfToggleButton pendingButton2 = Controls.Press.getPendingButton(_wpfWindow);

public Press(WpfWindow wpfWindow):base(wpfWindow)
{
this.pendingButton1.SearchProperties[WpfControl.PropertyNames.AutomationId] = "Tab1Button";
}

public void clickPendingButton() {
WpfToggleButton pendingButton3 = new WpfToggleButton(_wpfWindow);
pendingButton3.SearchProperties[WpfControl.PropertyNames.AutomationId] = "Tab1Button";

WpfToggleButton pendingButton4 = Controls.Press.getPendingButton(_wpfWindow);

Mouse.Click(pendingButton1); //UITestControlNotFoundException
Mouse.Click(pendingButton2); //UITestControlNotFoundException
Mouse.Click(pendingButton3); //This works
Mouse.Click(pendingButton4); //This works
}
}

当我在 clickPendingButton() 函数之外声明 pendingButton 时,我想让它工作,因为它在多个其他函数中使用。

最佳答案

辅助函数 Controls.getWpfButton() 只返回按钮的属性,而不是“真正的”按钮。它必须在构造函数中使用,然后它可以在类中的任何地方使用。我不会说这是最佳实践,但它对我有用。

Press.cs

public partial class Press : SharedElements
{
private WpfButton pendingButton;

public Press(WpfWindow wpfWindow):base(wpfWindow)
{
pendingTab = Controls.getWpfButton(_wpfWindow, "Tab1Button");
}

public void clickPendingButton() {
Mouse.Click(pendingButton);
}
}

控件.cs

internal static WpfButton getWpfButton(WpfWindow wpfWindow, string AutomationId)
{
WpfButton button = new WpfButton(wpfWindow);
button.SearchProperties[WpfControl.PropertyNames.AutomationId] = AutomationId;
return button;
}

关于c# - 如何正确声明类变量(CUIT 控件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54145871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com