Можно ли узнать, какой файл загружается Firefox с Selenium? - PullRequest
3 голосов
/ 03 ноября 2010

Прежде всего, я извиняюсь за мой английский

Я делаю некоторые сценарии на Python, используя Selenium RC.Цель состоит в том, чтобы получить доступ к какому-либо веб-сайту и загрузить некоторые файлы. В конце сценария я хотел бы узнать, какие именно файлы были загружены

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

Итакя пытался найти решение этой проблемы, если можно было бы обработать загрузку из Firefox, чтобы точно знать, когда происходит загрузка и что загружается, то я был бы очень хорошо, но пока я ничего не нашелоб этом

Спасибо за вашу помощь

Ответы [ 4 ]

0 голосов
/ 12 ноября 2012

В этом случае просто создайте новую папку каждый раз и загружайте туда свой файл.Убедитесь, что имя папки увеличивается, если оно уже завершено (например, папка1, папка2, папка3 .....)

0 голосов
/ 23 ноября 2010

Ну, я нашел что-то, чтобы ответить на мою проблему (только Firefox), код достаточно ясен для понимания (вы должны ссылаться на состояние и цель из moz_downloads в API Firefox)

def check_download(self):
    isDownloading = False
    t = 0
    while t != 60 or isDownloading:
        shutil.copy(os.path.join(self.finalFolder, "downloads.sqlite"), os.path.join(self.log_dir, self.sessionId+"downloads.sqlite"))
        conn = sqlite3.connect(os.path.join(self.log_dir, self.sessionId+"downloads.sqlite"))
        c = conn.cursor()
        c.execute("select state, target from moz_downloads")
        print '<waiting for download>'
        for row in c:
            dlState = row[0]
            dlTarget = row[1]
            if dlState == 0 or dlState == 7 or dlState == -1:
                isDownloading = True
            if self.verbose:
                print "status: {0} | target: {1}".format(dlState, dlTarget)
            if dlState == 1:
                filenameExpected = os.path.join(self.download_dir, os.path.split(dlTarget)[1])
                self.writeline_log("FILE;" + filenameExpected + ';')
                return
        c.close()
        conn.close()
        time.sleep(1)
        t = t + 1
0 голосов
/ 15 января 2011

Я сам не пробовал, но я бы подумал о том, чтобы создать несколько профилей Firefox, каждый из которых имеет свой каталог загрузки, а затем указать моим экземплярам использовать эти профили (или, возможно, программно установить значения профиля, если вы используете Selenium2 - Я не уверен, что каталог загрузки можно изменить или нет). Затем вы можете следить за каждым каталогом и видеть, что было загружено для каждого сеанса.

0 голосов
/ 07 ноября 2010

Если вы работаете с python -> Selenium RC, почему бы вам просто создать тип файла lastdownload.txt и указать даты, имена файлов файлов, которые вы загружаете.

Таким образом, каждый раз, когда ваш скрипт запускается, он проверяет файловый сервер и ваш файл журнала. чтобы увидеть, какие файлы новые, какие файлы у вас уже есть. (если используется то же имя файла вы можете проверить время последнего обновления заголовков или даже размер файла для сравнения)

Затем вы просто скачиваете новые файлы ... таким образом, вы копируете простой инкрементный механизм с поиском в текстовом файле ...

...