在Ranorex中如何处理弹出窗口

时间:2017-06-01 15:23:18

标签: c# forms popup ranorex

在ranorex中,我有一个关于使用条件语句或任何建议处理现金抽屉弹出窗口的快速问题。每当我启动我们的应用程序时,都会有一个登录屏幕,但不是每次都有,所以我该怎么办才能处理这个弹出窗口。

这是需要点击的两个必填字段

 Username field:  /form[@title='Windows Security']/?/?/element[@instance='0']/text[@class='Edit']
 Password field:    /form[@title='Windows Security']/?/?/element[@instance='1']/text[@class='Edit']

/form[@title='Windows Security']/?/?/element[@instance='2']/button[@text='OK']

我应该如何处理?使用if then else语句?如果是这样,我该怎么做。

此外,在我登录后会有现金抽屉初始化弹出窗口,这是一整天的一次。

/dom[@domain='crs.pre.kofile.com']//input[#'cashdrawerinitialize-btn']   

这是弹出此弹出窗口时需要点击的按钮。请让我知道

谢谢

2 个答案:

答案 0 :(得分:0)

对于您的登录弹出窗口,我建议使用Ranorex操作表中的可选操作,如Ranorex Online User Guide中所述,或使用User code action检查项目是否存在。

如果您决定使用用户代码方法,则可以使用以下行

if(repo.App.Form.UsernameInfo.Exists(duration))
{
    //Do your steps here
}
else
{
    //What to do, when the first popup is not here?
}

请不要忘记使用存储库项目的Info对象。

对于你的第二个弹出窗口,你可以使用Ranorex Popupwatcher类,如Ranorex代码示例中所述(对不起,但我不允许发布更多链接,但是)

答案 1 :(得分:0)

UI测试中的一个常见问题是出现了意外的对话框,例如在KeePass中的“更新检查”对话框中。

要解决此问题,可以使用PopupWatcher类。使用此类,您可以为可能在测试执行期间弹出的每个对话框添加监视。在这些手表中,您可以指定PopupWatcher应继续监视的RanoreXPath或Repository项目,以及应触发的方法或应单击的Repository项目。

void ITestModule.Run()
{
// Create PopupWatcher
PopupWatcher myPopupWatcher = new PopupWatcher();
// Add a Watch using a RanoreXPath and triggering the Method CloseUpdateCheckDialog
myPopupWatcher.Watch("/form[@controlname='UpdateCheckForm']/button[@controlname='m_btnClose']", CloseUpdateCheckDialog);
// Add a Watch using the info object of a button and triggering the Method CloseUpdateCheckDialog
// myPopupWatcher.Watch(repo.UpdateCheckDialog.btCloseInfo, CloseUpdateCheckDialog);
// Add a Watch using the info object of the dialog and the info object of the button to click
// myPopupWatcher.WatchAndClick(repo.UpdateCheckDialog.SelfInfo, repo.UpdateCheckDialog.btCloseInfo);
// Add a Watch using a repository folder object and the info object of the button to click
// myPopupWatcher.WatchAndClick(repo.UpdateCheckDialog, repo.UpdateCheckDialog.btCloseInfo);
// Start PopupWatcher
myPopupWatcher.Start();
}
public static void CloseUpdateCheckDialog(Ranorex.Core.Repository.RepoItemInfo myInfo, Ranorex.Core.Element myElement)
{
myElement.As<ranorex.button>().Click();
}
public static void CloseUpdateCheckDialog(Ranorex.Core.RxPath myPath, Ranorex.Core.Element myElement)
{
myElement.As<ranorex.button>().Click();
}

或者这样:

var watcher = new PopupWatcher();
//provide there two elements WatchAndClick(RepoItemInfo, RepoItemInfo);
watcher.WatchAndClick(RepoItemInfoFindElement, RepoItemInfoClickElement);
watcher.Start();
//some work
watcher.Stop();