Как дождаться скриншота веб-страницы, используя селен и фантом в Python3? - PullRequest
1 голос
/ 05 апреля 2019

Хотелось бы создать изображение веб-страницы, но должно ждать, пока оно полностью загрузится (включая AJAX).

Время ожидания должно быть задано жестко заданным значением, а не ожиданием элемента.

Следующее делает снимок экрана без ожидания:

from selenium import webdriver

driver=webdriver.PhantomJS()
driver.set_window_size(w,h)
driver.get('webpage_address')
driver.save_screenshot('/path/to/dir/foo.png')
driver.quit()

На основе некоторой документации :

from selenium import webdriver

driver=webdriver.PhantomJS()
driver.set_window_size(w,h)
driver.implicitly_wait(t)
driver.get('webpage_address')
driver.save_screenshot('/path/to/dir/foo.png')
driver.quit()

Однако это не выводитизображение, и оно, кажется, не ждет.

Любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Возможно, ожидая, пока элемент присутствует на данной странице, что означает, что он полностью загружен (не во всех случаях), вы можете затем сделать снимок экрана :)

WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.ID, "myElement"))

driver.save_screenshot('/path/to/dir/foo.png')
0 голосов
/ 05 апреля 2019

Попробуйте следующий код:

driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS) ;
or
wait = WebDriverWait(browser, 10)

Здесь мы неявно просим код ждать 10 секунд

...