WatiN не будет работать с MSpec - UnauthorizedAccessException - PullRequest
1 голос
/ 11 марта 2011

Я пытаюсь заставить WatiN работать с MSpec в VS2010, используя TestDriven.Net.Мой код выглядит следующим образом:

[Subject("Whatever")]
public class when_on_home_page {

    private static IE browser;

    Establish context = () =>
        browser = new IE();

    Because of = () => {
        browser.GoTo("http://localhost:1234/");
        browser.WaitForComplete();
    };

    It should_show_add_details_link = () =>
        browser.Link(Find.ByValue("Add Details")).Exists.ShouldBeTrue();
}

Когда я запускаю это, браузер загружает страницу, но когда он проверяет ссылку, я получаю:

Независимо от того, когда включендомашняя страница
»должна отображать ссылку« Добавить подробности »(FAIL)

Проверка« должна показать ссылку «Добавить подробности» »: System.UnauthorizedAccessException: доступ запрещен.(Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)) в mshtml.IHTMLElementCollection.tags (объект tagName) в WatiN.Core.Native.InternetExplorer.IEElementCollection.GetElementsByTag (String tagNleEIgnate.NeF)..Core.NativeElementFinder.d__2.MoveNext () в WatiN.Core.ElementFinder.FindFirst () в WatiN.Core.Element.FindNativeElementInternal () в WatiN.Core.Element.get_Exists () NavigationSpecs.cs (20,0) в:RoboWeb.Specs.when_on_home_page. <. Ctor> b__2 () в Machine.Specifications.Model.Specification.InvokeSpecificationField () в Machine.Specifications.Model.Specification.Verify ()

Посмотрев вокруг,Я проверил следующее:

  • VS работает от имени администратора
  • TestDriven.Net запускает все в режиме STA, по-видимому
  • В IE отключен «защищенный режим»
  • Я не могу добавить сайт в доверенные сайты, предположительно, потому что он работает локально
  • Я вызываю WaitForComplete(), а также пробовал Thread.Sleep ()

Я тоже пробовал это с FireFox, но это просто вылетает.

Есть идеи, что я здесь не так делаю?

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Эти характеристики работают на меня. На самом деле, это моя первая спецификация WatiN; Я написал, пытаясь воспроизвести ошибку, которую вы получили. : -)

Единственное, что мне нужно было сделать, это отключить защищенный режим IE. Я запустил спецификации

  • в командной строке (см. WebSpecs-Watin.cmd в репозитории, скомпилируйте проект specs и запустите веб-приложение из VS перед запуском cmd)
  • с бегунком TD.Net
  • с помощью ReSharper

Они добились успеха во всех трех случаях. Я не работаю администратором.

Не могли бы вы попытаться воспроизвести ошибку в проекте, связанном выше? Если у вас не установлен Git, в верхнем разделе есть кнопка загрузки.

0 голосов
/ 12 марта 2011

System.UnauthorizedAccessException может произойти в ряде случаев. Если страница загружена не полностью и вы пытаетесь получить доступ к объекту, а также просто не являетесь нужным пользователем. Я бы начал с отладки скрипта вручную и запуска тестового прогона от имени администратора.

Если это сработает, попробуйте комбинации администратор и полная скорость, не администратор и полная скорость, а также администратор и отладка. Тогда вы должны иметь хорошее представление о том, в чем реальная проблема. В некоторых редких случаях (в ранних ранних версиях WatiN) мне приходилось заключать вызовы в попытку - поймать, обработать это исключение и затем повторить попытку после короткого ожидания.

...