Безголовое тестирование браузера с функцией загрузки?


Я искал решение для проведения безголового тестирования в osx. Но мне нужна возможность сохранять файлы, возвращенные сервером.

Я протестировал selenium, phantomjs, casperjs и изучил все, что смог найти в интернете.

Ни один из них не поддерживает загрузку. я что-то упустил? существуют ли какие-либо безголовые браузерные / тестовые платформы, которые поддерживают загрузку?

3 6

3 ответа:

То, что вы можете сделать, это:

  • запустите виртуальный дисплей (см. Xvfb )
  • запустите Firefox браузер с настройками, настроенными на автоматическое сохранение csv файлов

рабочий пример в python с дополнительными комментариями (используя pyvirtualdisplay xvfb обертка):

from os import getcwd
import time

from pyvirtualdisplay import Display
from selenium import webdriver

# start the virtual display
display = Display(visible=0, size=(800, 600))
display.start()

# configure firefox profile to automatically save csv files in the current directory
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")

browser = webdriver.Firefox(firefox_profile=fp)
browser.get('http://www.nationale-loterij.be/nl/onze-spelen/lotto/resultaten')

# check the option
browser.find_element_by_id('corporatebody_3_corporategrid93961a8f9b424ed6bd0697df356d9483_1_rblType_0').click()

# click the link
browser.find_element_by_name('corporatebody_3$corporategrid93961a8f9b424ed6bd0697df356d9483_1$btnDownload').click()

# hardcoded delay for waiting a file download (better check for the downloaded file to appear on the disk)
time.sleep(2)

# quit the browser
browser.quit()

# stop the display
display.stop()

См. также:

Я использую команду on OSX selenium + wget для выполнения загрузок.

Вот пример кода:

new_driver = webdriver.Firefox()
new_driver.get(url)
for element in new_driver.find_elements_by_tag_name('img'):
    os.system('wget ' + element.get_attribute('src').rstrip('\n'))

Awesomium является безголовым браузером и имеет менеджер загрузок с обработчиками событий загрузки. здесь ссылка на документацию.