无法将lambda表达式转换为类型'string',因为它不是委托类型

时间:2011-01-25 18:40:37

标签: watin

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);

        }
    }
}

1 个答案:

答案 0 :(得分:2)

鉴于the code here,这对我来说很好。

您是否可能使用没有超载的旧版WatiN?如果你在Reflector中查看WindowsEnumerator,你会看到这个重载吗?

public IList<Window> GetChildWindows(IntPtr hwnd,
                                     WindowEnumConstraint constraint)