Windows Phone 8 模拟按钮点击

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/coaxhappy/article/details/9421577

在Windows Phone 8中,可以通过代码模拟按钮点击来触发一个按钮。

第一、对Button写个静态扩展类

    public static class ButtonBaseExtensions
    {
        public static void PerformClick(this System.Windows.Controls.Button button)
        {
            System.Windows.Automation.Peers.ButtonAutomationPeer buttonPeer = new System.Windows.Automation.Peers.ButtonAutomationPeer(button);
            System.Windows.Automation.Provider.IInvokeProvider invokeProvider = buttonPeer.GetPattern(PatternInterface.Invoke) as System.Windows.Automation.Provider.IInvokeProvider;

            invokeProvider.Invoke();
        }
    }


第二、测试

        <Grid x:Name="ContentPanel"
              Grid.Row="1"
              Margin="12,0,12,0">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Button Name="btn1"
                    Width="212"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Click="Button_Click"
                    Content="Button1" />
            <Button Name="btn2"
                    Grid.Row="1"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Click="Button_Click_1"
                    Content="Button2" />
        </Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("测试模拟按钮点击", "提示", MessageBoxButton.OKCancel);
}

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    //Button_Click(sender, e);
    btn1.PerformClick();
}


如果直接调用Button_Click事件,也可以触发,但是调用时会发现Button_Click事件中的Sender实际是btn2。如果通过PerformClick来触发,则是模拟的在手机屏幕上点击按钮btn1来触发的事件,Button_Click事件中的sender为btn1。

思考:

1、我们是否可以通过此方法扩展,实现对Windows Phone的自动化测试研究

2、展开PatternInterface,发现它是一个枚举,有很多操作类型,是否可以实现其他的操作?枚举如下

    // Summary:
    //     Specifies the control pattern that the System.Windows.Automation.Peers.AutomationPeer.GetPattern(System.Windows.Automation.Peers.PatternInterface)
    //     method returns.
    public enum PatternInterface
    {
        // Summary:
        //     The System.Windows.Automation.Provider.IInvokeProvider control pattern interface.
        Invoke = 0,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.ISelectionProvider control pattern
        //     interface.
        Selection = 1,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IValueProvider control pattern interface.
        Value = 2,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IRangeValueProvider control pattern
        //     interface.
        RangeValue = 3,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IScrollProvider control pattern interface.
        Scroll = 4,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IScrollItemProvider control pattern
        //     interface.
        ScrollItem = 5,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IExpandCollapseProvider control pattern
        //     interface.
        ExpandCollapse = 6,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IGridProvider control pattern interface.
        Grid = 7,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IGridItemProvider control pattern
        //     interface.
        GridItem = 8,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IMultipleViewProvider control pattern
        //     interface.
        MultipleView = 9,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IWindowProvider control pattern interface.
        Window = 10,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.ISelectionItemProvider control pattern
        //     interface.
        SelectionItem = 11,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IDockProvider control pattern interface.
        Dock = 12,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.ITableProvider control pattern interface.
        Table = 13,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.ITableItemProvider control pattern
        //     interface.
        TableItem = 14,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.IToggleProvider control pattern interface.
        Toggle = 15,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.ITransformProvider control pattern
        //     interface.
        Transform = 16,
        //
        // Summary:
        //     The System.Windows.Automation.Provider.ITextProvider control pattern interface.
        Text = 17,
    }

猜你喜欢

转载自blog.csdn.net/coaxhappy/article/details/9421577
今日推荐