Ваш атрибут Iterator
всегда будет None
, потому что вы останавливаете итерацию, как только происходит первый вызов , следующий . Думайте о next как о том, что он вызывается для каждого элемента, пока нет больше элементов для обработки, из документации Python о __next__
:
Возвращает следующий элемент из контейнера. Если других элементов больше нет, вызовите исключение StopIteration
blockquote>Единственное, что вы можете сделать, это инициализировать
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
FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(file.FullName);
using (new UseDialogOnce(ie.DialogWatcher, fileDownloadHandler))
{
ie.Button("exportPdfButtonId").ClickNoWait();
fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30);
fileDownloadHandler.WaitUntilDownloadCompleted(200);
}
Этот код добьется цели. Класс 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
Я просто столкнулся с этой той же проблемой, кроме я использую 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));
Взгляните на этот пост:
Как проверить, был ли PDF-файл успешно открыт в браузере с помощью WatiN?