Watin и PDF

Ваш атрибут Iterator всегда будет None, потому что вы останавливаете итерацию, как только происходит первый вызов , следующий . Думайте о next как о том, что он вызывается для каждого элемента, пока нет больше элементов для обработки, из документации Python о __next__:

Возвращает следующий элемент из контейнера. Если других элементов больше нет, вызовите исключение StopIteration

Единственное, что вы можете сделать, это инициализировать self.Iterator длиной стека (в __iter__), а затем на каждом шаге уменьшать его пока вы не достигнете 0 (а затем поднимите StopItate):

def __iter__(self):
    self.Iterator = len(self.stack) - 1  # initialize to the index of the last element
    return self

def __next__(self):
    if self.Iterator >= 0:
        current_value = self.stack[self.Iterator]
        self.Iterator = self.Iterator - 1  # update for the next step
        return current_value
    else: # stop if self.Iterator is -1
        raise StopIteration
7
задан Lance Roberts 13 October 2008 в 17:04
поделиться

4 ответа

FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(file.FullName);
using (new UseDialogOnce(ie.DialogWatcher, fileDownloadHandler))
{
    ie.Button("exportPdfButtonId").ClickNoWait();

    fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30);
    fileDownloadHandler.WaitUntilDownloadCompleted(200);
}
4
ответ дан 7 December 2019 в 07:52
поделиться

Этот код добьется цели. Класс UsedialogOnce может быть найден в коде WatiN.UnitTests и будет частью выпуска WatiN 1.3 (который будет, вероятно, выпущен сегодня вечером 14 октября).

FileDownloadHandler fileDownloadHandler = новый FileDownloadHandler (файл. FullName); с помощью (новый UseDialogOnce (т.е. DialogWatcher, fileDownloadHandler)) {т.е. Кнопка ("exportPdfButtonId").ClickNoWait ();

fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30);
fileDownloadHandler.WaitUntilDownloadCompleted(200);

}

HTH, Ведущий разработчик Jeroen van Menen WatiN

2
ответ дан 7 December 2019 в 07:52
поделиться

Я просто столкнулся с этой той же проблемой, кроме я использую Foxit вместо Acrobat. Я сказал Foxit не работать в браузере, затем этот код начал работать просто великолепно. Вот полный модульный тест, который должен добиться цели:

        string file = Path.Combine(Directory.GetCurrentDirectory(), "test.pdf");

        using (IE ie = new IE())
        {
            FileDownloadHandler handler = new FileDownloadHandler(file);

            using (new UseDialogOnce(ie.DialogWatcher, handler))
            {
                try
                {
                    ie.GoToNoWait("http://www.tug.org/texshowcase/cheat.pdf");

                    //WatiN seems to hang when IE loads a PDF, so let it timeout...
                    ie.WaitForComplete(5);
                }
                catch (Exception)
                {
                    //Ok.
                }

                handler.WaitUntilFileDownloadDialogIsHandled(30);
                handler.WaitUntilDownloadCompleted(30);
            }

        }

        Assert.That(File.Exists(file));
1
ответ дан 7 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

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