gpt4 book ai didi

c# - LeanFT C# 自动化;单击 wpf 按钮控件抛出异常

转载 作者:行者123 更新时间:2023-11-28 20:37:38 26 4
gpt4 key购买 nike

获取 HP.LFT.SDK.GeneralReplayException:一个或多个指定参数无效,同时尝试单击 wpf 按钮(使用 LeanFT 和 Visual Studio 2015 中集成的 C#)

给定以下代码:

// Identify the "LicensingButton" button
var LicensingButton = objAdminApplicationModel.wnd_Adminstration.Describe<IButton>(new ButtonDescription
{
Text = @"Licensing",
ObjectName = @"Licensing"
});
// Click the Licensing button.
LicensingButton.Click();

但是我遇到了异常

Exception is HP.LFT.SDK.GeneralReplayException: One or more specified arguments are not valid.
at HP.LFT.SDK.Core.ClassModel.TestObjectExecuterBase.HandleReplayError(Int32 errorCode, IDictionary`2 data)
at HP.LFT.SDK.Core.Communication.CommunicationClient.HandleError(Action`2 onError, Int32 status, IDictionary`2 data)
at HP.LFT.SDK.Core.Communication.CommunicationClient.Send(String messageType, IDictionary`2 data, Action`2 onError)
at HP.LFT.SDK.Core.ClassModel.TestObjectExecuter.ExecuteMethod(String methodName, Object[] arguments)
at HP.LFT.SDK.Core.ClassModel.TestObjectBase.ExecuteMethod(String methodName, Object[] arguments)
at HP.LFT.SDK.ClickBehaviour.Click(MouseButton button)
at HP.LFT.SDK.UiObjectBase.<>c__DisplayClassd.<Click>b__c()
at HP.LFT.SDK.OperationExecutionWrapper.ExecuteWithEvents(ITestObject testObject, Object additionalInfo, Action innerAction, MethodBase methodInfo, Boolean reportOnlyOnError, Object[] arguments)
at HP.LFT.SDK.OperationExecutionWrapper.ExecuteWithEvents[T1](Action innerAction, Action`1 originalMethod, T1 param1, Boolean reportOnlyOnError, ITestObject testObject, Object additionalInfo)
at HP.LFT.SDK.UiObjectBase.Click(MouseButton button)
at Admin4DM.Test.Licensing.Licensing_VerifyStaticTextDisplay() in C:\Source\Automation\Test\Licensing.cs:line 32

最佳答案

异常确实具有误导性。乍一看,我认为 ButtonDescription 构造不正确,这意味着 TextObjectName 属性需要其他值。

但事实并非如此。

问题完全出在点击操作上。正如您在检查 Click 方法时所看到的,它有两个重载:

  1. 期待一个 MouseButton 枚举;

    当我们调用 Click 并且我们不传递枚举或对象时,默认使用 MouseButton.Left 枚举值,但您也可以指定 .Middle.Right.

  2. 期望 ClickArgs 对象,形式为:

    new ClickArgs {
    Button = MouseButton.Left,
    Location = Position.Center
    }

    Location 表示点击按钮的位置。 (.BottomLeft, .BottomRight, .Center, .TopLeft.TopRight ).

    实际上,如果我们使用 MouseButton 重载,它仍然使用 Position 但默认情况下点击 Position.Center

现在理论已经结束了(呸),让我们看看实践中会发生什么。

我们看到的异常向我们表明,在单击该按钮时出现了明显的错误,更具体地说,在尝试使用 MouseButton.Left< 单击 Position.Center 时抛出了异常。由于 .Center 是根据按钮的 width 和 height 属性计算的,可能是按钮有问题导致计算错误(不幸的是我只能假设这一点,我不能肯定地告诉你)。

顺便说一句,如果这发生在您正在测试的 AUT 的任何按钮上,很可能是开发人员做错了什么,因为这并不常见(例如,在 WPF 我正在测试,我的任何按钮都没有问题。

我们可以做的是尝试以下操作:

  1. 尝试点击 .Middle.Right;
  2. 尝试使用 Position 枚举点击按钮的其他位置;
  3. 尝试使用 HP.SDK.LFT.Mouse 点击按钮的其他位置;

    // Use Mouse class to click on the button in a fine tuned location
    var loc = LicensingButton.AbsoluteLocation;
    var p = new System.Drawing.Point(loc.X + 5, loc.Y + 5);

    Mouse.Click(p, MouseButton.Left);
  4. 尝试将对象标识为 Insight image-based identification ;

  5. 尝试使用 VRI 识别对象;
  6. 尝试识别一些父对象(如果可能)并执行 Click 操作,使其“点击”您想要实际点击的按钮

关于c# - LeanFT C# 自动化;单击 wpf 按钮控件抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48269906/

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