В большой степени использование Watin, IE остается открытая проблема

Я использую Watin в приложении консоли C# для проверки веб-сайтов, существует пять консольных приложений, работающих одновременно. Причина я частично использую Watin в качестве поискового робота, состоит в том, потому что несколько веб-сайтов используют JavaScript (или ajax) для установки содержания страницы.

Следующее является примером кода для получения количества комментария страницы:

        Settings.Instance.MakeNewIeInstanceVisible = false;
        using (var browser = new IE(commentLink, true))
        {
            browser.Link(Find.ByUrl(commentLink)).WaitUntilExists(20);

            Span commentSpan = browser.Span("COUNT_TOTAL");

            if (commentSpan.Exists)
            {
                int commentCount;
                if (Int32.TryParse(commentSpan.InnerHtml, out commentCount))
                {
                    return commentCount;
                }
            }
        }

Моя проблема после выполняет эти 5 консольное приложение некоторое время (90 минут), много экземпляров IE остается открытым (из-за тайм-аута или ошибки, или IE занят), таким образом, система является довольно медленной и потребность перезагрузить.

Как я изменяюсь, мой код для предотвращения этой вещи происходят и заставляют мои приложения остаться эффективными?

5
задан superche 4 March 2010 в 12:33
поделиться

1 ответ

Я думаю, что в вашем примере кода есть только один момент, когда IE не будет близко. Поскольку вы находитесь внутри , используя , даже если возникает исключение внутри этого , использующего , браузер будет удален, так что все в порядке.

Но в момент создания браузера:

new IE(commentLink, true)

вы не находитесь внутри , используя , и нет никакого волшебства попробуйте ... поймать . Попробуйте это , и дайте мне знать, помогло ли это:

Settings.Instance.MakeNewIeInstanceVisible = false;
using (var browser = new IE(true))
{
    browser.GoTo(commentLink);

    browser.Link(Find.ByUrl(commentLink)).WaitUntilExists(20);

    Span commentSpan = browser.Span("COUNT_TOTAL");

    if (commentSpan.Exists)
    {
        int commentCount;
        if (Int32.TryParse(commentSpan.InnerHtml, out commentCount))
        {
            return commentCount;
        }
    }
}
7
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: