我正在使用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);
}
,但这只是将密钥发送到浏览器窗口。我也尝试过使用录音工具。两者都不成功。
在此活动结束后,我需要等待弹出窗口出现,然后点击“留在此页面上”。有谁知道如何实现这个目标?
答案 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上找到扩展名(由我编写)。