Невозможно преобразовать лямбда-выражение в тип 'string', поскольку оно не является делегатом - PullRequest
0 голосов
/ 25 января 2011

w => w.ClassName == "Button" && new WinButton (w.Hwnd) .Title == "OK"

Я использую класс, который нажимает «ОК» во всех диалоговых окнах, которые открываются при тестировании веб-сайта на Watin. Но эта строка дает ошибку, что лямбда-выражение не может быть преобразовано в строку типа, потому что это не тип делегата.

Я использовал 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 Ответ

2 голосов
/ 25 января 2011

Учитывая код здесь , он мне подходит.

Возможно ли, что вы используете более старую версию WatiN, которая не имеет такой перегрузки?Если вы посмотрите на WindowsEnumerator в Reflector, вы видите эту перегрузку?

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