处理弹出消息 - 编码的UI测试

时间:2016-02-18 09:01:01

标签: c# testing automated-tests coded-ui-tests

问题

我正在使用Coded UI Test构建器运行测试并从头开始编写所有代码。我面临的问题是在测试过程中有一条弹出消息,其结果是“留在此页面上”或“离开此页面”。我希望我的测试能够点击“留在这个页面上”。

弹出窗口有时会在事件发生后直接显示,或者有时会在几秒钟后出现。

代码

因此,我在消息出现之前运行的事件是单击按钮:

<script>
functionn caltotal()
{

}
</script>
<?php
echo form_open('add_veg/insert_data', 'class="form-horizontal" id="myform" role="form"');
$sales_date = array(
        'type'  => 'date',
        'name'  => 'date',
        'id'    => 'date',
        'class' => 'form-control'
);
$vegnames=array();
foreach($veg_names as $r){
   $vegnames[$r->value]=$r->label;
}
/*
$vegnames = array(
        'cauliflower' => 'Caulifower',
        'Brinjal' => 'Brinjal'
);
*/
$wt = array(
        'type'  => 'text',
        'name'  => 'weight',
        'id'    => 'wt',
        'class' => 'form-control'
);
$price = array(
        'type'  => 'text',
        'name'  => 'price',
        'id'    => 'price',
        'class' => 'form-control'
);

$total=array(
            'type'=>'readonly',
            'name'=>'total',
            'id'=>'total',
            'class'=>'form-control disabled'
);
$save=array(
        'name' =>'sub',
        'value' =>'Save',
        'class' =>'btn btn-success btn-sm'
);

echo form_label('Sales date', 'sdate', 'class="control-label col-sm-2"');
echo form_input($sales_date);
echo form_label('Vegitable Name', 'vname', 'class="control-label col-sm-2"');
//echo form_input($veg_name);
echo form_dropdown('v_name', $vegnames,'','class="form-control"');
echo form_label('Weight', 'wt', 'class="control-label col-sm-2"');
echo form_input($wt);
echo form_label('Price', 'price', 'class="control-label col-sm-2"');
echo form_input($price);
echo form_label('Total', 'total', 'class="control-label col-sm-2"');
echo form_input($total);
echo form_submit($save);
echo form_close();
?> 

我尝试了ClickButton(browser, "login"); void ClickButton(UITestControl parent, string id) { var button = new HtmlButton(parent); button.SearchProperties.Add(HtmlButton.PropertyNames.Id, id); Mouse.Click(button); } ,但这只是将密钥发送到浏览器窗口。我也尝试过使用录音工具。两者都不成功。

在此活动结束后,我需要等待弹出窗口出现,然后点击“留在此页面上”。有谁知道如何实现这个目标?

2 个答案:

答案 0 :(得分:0)

我们实际上映射了这个确认窗口,它对我们有用。 我们从一个名为Windows Internet Explorer的窗口开始 其次是一个名为= Windows Internet Explorer的窗格 最后在这个页面上留下名字的按钮

所有技术= MSAA。

如果您不希望每次确认,您必须处理编写代码以等待控件的准备就绪和适当的超时。

希望这有帮助。

答案 1 :(得分:0)

根据窗口的确切位置,您应该能够处理它没有问题。我将使用检查器来获取窗口的属性并使用WaitFor *方法之一给它一些时间。以下是处理IE显示的安全弹出窗口的示例:

namespace CaptainPav.Testing.UI.CodedUI.PageModeling.Win
{
    public class IESecurityWindow<T> : PageModelBase<WinWindow>
     {
        protected const string SecurityWindowName = "Internet Explorer Security";

        internal protected override WinWindow Me => new WinWindow().Extend(WinWindow.PropertyNames.Name, SecurityWindowName, PropertyExpressionOperator.EqualTo);

        protected WinButton AllowButton => this.Me.Find<WinButton>(WinButton.PropertyNames.Name, "Allow", PropertyExpressionOperator.EqualTo);

        internal readonly T AllowModel;
        public IESecurityWindow(T allowModel)
        {
            this.AllowModel = allowModel;
        }

        public T ClickAllow()
        {
            // if not IE, this will return false and the next model is returned; change the time if you need more or less wait
            if (this.AllowButton.IsActionable(3000))
            {
                Mouse.Click(this.AllowButton);
            }

            return AllowModel;
        }
    }
}

在这种情况下,对话框是Win *类型,而不是Html *。有一些自定义扩展方法,使搜索和东西更容易,但这应该给你一个想法。如果有兴趣,可以在github上找到扩展名(由我编写)。