WatiN ie9确认对话框不工作
本文关键字:工作 对话框 确认 ie9 WatiN | 更新日期: 2023-09-27 18:01:04
可能重复:
Watin&IE9-无法点击ok按钮
var dialogHandler = new WatiN.Core.DialogHandlers.ConfirmDialogHandler();
using (new WatiN.Core.DialogHandlers.UseDialogOnce(browser.DialogWatcher, dialogHandler))
{
browser.Button(Find.ById("btnSave")).ClickNoWait();
dialogHandler.WaitUntilExists();
}
它不适用于ie9,javascript确认我已经使用了最新版本2.1
ConfirmDialogHandler confirmHandler = new ConfirmDialogHandler();
using (new UseDialogOnce(browser.DialogWatcher, confirmHandler))
{
confirmHandler.WaitUntilExists();
confirmHandler.CancelButton.Click();
}
它适用于ie7,但不适用于ie9DrunkenMonkey的答案不起作用
WatiN-2.1.0.1196
如果确认对话框在IE9中不起作用,请尝试下一个决策
(Visual studio 2010、Windows7、NetFramework 4.0、Internet explorer 9(
首先,您必须将引用UIAutomationClient和UIAutomationTypes添加到测试项目中。
下一个方法扩展浏览器类
public static void ConfirmDialogIE9(this Browser browser)
{
browser.ShowWindow(NativeMethods.WindowShowStyle.ShowMaximized);
Thread.Sleep(2000);
System.Windows.Automation.TreeWalker trw = new System.Windows.Automation.TreeWalker(System.Windows.Automation.Condition.TrueCondition);
System.Windows.Automation.AutomationElement mainWindow = trw.GetParent(System.Windows.Automation.AutomationElement.FromHandle(browser.hWnd));
System.Windows.Automation.AutomationElementCollection main = mainWindow.FindAll(System.Windows.Automation.TreeScope.Children
, System.Windows.Automation.Condition.TrueCondition);
foreach (System.Windows.Automation.AutomationElement element in main)
{
if (element.Current.Name.Equals("VIIS - Windows Internet Explorer") && element.Current.LocalizedControlType == "pane")
{
System.Windows.Automation.AutomationElement DialogBox = trw.GetFirstChild(element);
DialogBox.SetFocus();
System.Windows.Automation.InvokePattern clickOk = (System.Windows.Automation.InvokePattern)
DialogBox.FindAll(System.Windows.Automation.TreeScope.Children, System.Windows.Automation.Condition.TrueCondition)[0].GetCurrentPattern(System.Windows.Automation.AutomationPattern.LookupById(10000));
clickOk.Invoke();
Thread.Sleep(1000);
break;
}
}
我的项目中有以下代码:
var cancel = browser.Link(Find.ByUrl(CANCEL_LINK));
var confirmDialog = new ConfirmDialogHandler();
using (new UseDialogOnce(browser.DialogWatcher, confirmDialog))
{
cancel.ClickNoWait();
confirmDialog.WaitUntilExists();
confirmDialog.OKButton.Click();
browser.WaitForComplete();
}
这在IE9中有效。请注意,它是WatiN v2.0.50727,但我认为这对运行v2.1没有什么影响。
Watin有处理对话框的方法。尝试使用以下方法:
public static void SetCloseIEHandler(bool clickOk)
{
closeIeHandler = new CloseIEDialogHandler(clickOk);
BaseIEController.IE.DialogWatcher.Add(closeIeHandler);
}
private static void ClearDialogHandler(IDialogHandler dialogHandler)
{
if (BaseIEController.IE.DialogWatcher.Contains(dialogHandler))
{
BaseIEController.IE.DialogWatcher.Remove(dialogHandler);
dialogHandler = null;
}
}