Ответ 1
Запустить Visual Studio как администратор
Моя проблема в том, что я не могу получить простой тест WatiN для надежной работы на моей машине разработки под управлением Windows Server 2008 и IE8.
Я видел пару хороших сообщений об этом, но у меня все еще есть проблемы. Вот сообщения:
Шаги в первой статье, казалось, помогли (закомментируйте ":: 1" в моем файле хостов, поместите мои сайты на надежные сайты и убедитесь, что у моего app.config есть "STA", и он установлен на "копировать, если новый", но они не помогли надежно. Я попробовал код из второго примера, надеясь, что это поможет, но это не так. Я использую версию WatiN версии 2.0 beta 1.
Мой код NUnit выглядит следующим образом:
protected Browser Browser { get; set; }
[TestFixtureSetUp]
public void SetupPriorToTestsInThisFixture()
{
Browser = new IE();
Browser.GoTo(Constants.SiteCollectionUrl);
}
[TestFixtureTearDown]
public void TearDownAfterTestsInThisFixture()
{
if (Browser != null)
{
Browser.Dispose();
}
}
[Test]
public void WaterThroughThePipes()
{
Link link = Browser.Link(Find.ByText("Calendar"));
bool exists = link.Exists;
Assert.That(exists, Is.True, "Could not find 'Calendar' link.");
}
То, что я вижу, это то, что иногда (хотя и редко) мой тест проходит. Иногда утверждение терпит неудачу (существует = ложь), иногда я получаю тайм-аут при попытке открыть браузер, а иногда я получаю сообщение об ошибке, пытающееся получить доступ к link.Exists.
Ссылка на доступ к ошибкам. Exists выглядит так:
MyFixture.WaterThroughThePipes: System.Runtime.InteropServices.COMException: интерфейс неизвестен. (Исключение из HRESULT: 0x800706B5)
Теперь я не могу воспроизвести ошибку тайм-аута, поэтому я не могу представить, что на данный момент (хотя это всегда происходило все время).
Я стараюсь видеть разные результаты при запуске в режиме отладки, а не в режиме отладки.
Для того, что стоит, Firefox 3.0.6 никогда не работал у меня. Я бы хотел, чтобы он работал, но IE должен работать независимо. Вот ошибка, которую я получаю с Firefox.
MyFixture (TestFixtureSetUp): WatiN.Core.Native.Mozilla.FireFoxException: не удается подключиться к серверу jssh, убедитесь, что вы правильно установили плагин jssh.xpi ---- > System.Net.Sockets.SocketException: соединение не может быть выполнено, потому что целевой компьютер активно отклонил его 127.0.0.1:9997
Любые идеи? Я действительно не хочу возвращаться к Селену (был там, сделал это), но мне, возможно, придется.
Запустить Visual Studio как администратор
Мне удалось получить эту ошибку COM, чтобы уйти - и чтобы мои тесты работали нормально, - изменив параметры моего интернет-безопасности на "Включить защищенный режим" даже для сайтов локальной интрасети. Этот единственный флажок сделал все возможное. (И мне не нужно запускать Visual Studio в качестве администратора.)
См. это сообщение в блоге для устранения этой проблемы без запуска Visual Studio в качестве администратора.
Коротко:
В Internet Explorer откройте "Инструменты" → "Свойства обозревателя" → "Безопасность" - "Локальная интрасеть" и установите флажок "Включить защищенный режим".
Я запускаю IE 8 и Visual Studio 2010 в Windows 7.
IE8 definatley работает с WatiN и работает с первого публичного выпуска IE8.
Если что-то работает в отладке, но не при его запуске, это обычно указывает на проблему блокировки времени или сервера 2008.
Вы должны поместить строку, которая терпит неудачу в попытке catch, а затем, если есть пауза для исключения, например, полсекунды, а затем повторите попытку.
Также убедитесь, что вы отключили все дополнительные блокировки безопасности сервера и запускаете nUnit в качестве администратора, чтобы избежать сбоя в работе UAC.
Относительно ошибки, которую вы видите в firefox... Это можно преодолеть, установив FireWatir FF-плагин. (Или, по крайней мере, это сработало для меня на 3.5.3)
Но, как уже упоминалось, IE поддерживается и в контексте WatiN использование FireFox не является волшебным решением.
Другой альтернативой, чтобы избежать запуска Visual Studio или NUnit в качестве администратора, было бы отключить UAC на уровне машины, что не должно быть проблемой безопасности, если вы работаете с минимальными привилегиями (что вам должно быть).