w => w.ClassName ==“Button”&&新的WinButton(w.Hwnd)。标题==“确定”
我正在使用在Watin上测试网站时打开的所有对话框窗口上单击“确定”的类。但是这一行给出了lambda表达式的错误,因为它不是委托类型,所以无法转换为类型字符串。
我已经使用过System.Linq但仍无法正常工作
请帮帮我!
整个代码如下:
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using WatiN.Core;
using SCO.Automated.Testing.Service;
using WatiN.Core.DialogHandlers;
using WatiN.Core.Native.Windows;
using WatiN.Core.Native.InternetExplorer;
namespace SCO.Automated.Testing.Service
{
public class OKDialogHandler : BaseDialogHandler
{
public override bool HandleDialog(Window window)
{
var button = GetOKButton(window);
if (button != null)
{
button.Click();
return true;
}
else
{
return false;
}
}
public override bool CanHandleDialog(Window window)
{
return GetOKButton(window) != null;
}
private WinButton GetOKButton(Window window)
{
var windowButton = new WindowsEnumerator().GetChildWindows(window.Hwnd, w => w.ClassName == "Button" && new WinButton(w.Hwnd).Title == "OK").FirstOrDefault();
if (windowButton == null)
return null;
else
return new WinButton(windowButton.Hwnd);
}
}
}
答案 0 :(得分:2)
鉴于the code here,这对我来说很好。
您是否可能使用没有超载的旧版WatiN?如果你在Reflector中查看WindowsEnumerator
,你会看到这个重载吗?
public IList<Window> GetChildWindows(IntPtr hwnd,
WindowEnumConstraint constraint)