Допустим, я нашел src картинки на странице. Как мне ее сохранить к себе теперь? Интересует использование именно webdriver, а не получить полный урл и скачать http запросом.
Проблема: нужно скачать картинки с сайта, но сайт защищен cloudflare. curl не проходит javascript-тест. Отдельно взять и скачать каждую картинку при помощи selenium тоже не выходит, видимо идет проверка по referer или как-то еще. Нужно открыть страницу и сохранить оттуда картинки.
Пытался так это реализовать (открыть картинку в новой вкладке и скачать оттуда):
$crawler = $client->request('GET', $url);
$client->waitFor('html');
$imgs = $client->findElements(WebDriverBy::cssSelector('img'));
foreach ($imgs as $img) {
$img_url = $img->getAttribute('src');
$client->executeScript("window.open('$img_url');");
}
$windows = $client->getWindowHandles();
$visitedWindows[] = $client->getWindowHandle();
foreach ($windows as $window) {
if (in_array($window, $visitedWindows, true)) {
continue;
} else {
$client->getWebDriver()->switchTo()->window($window);
}
}
Но получаю ошибку: stale element reference: element is not attached to the page document (Session info: headless chrome=88.0.4324.104)
При том, что скрипт выше все урлы картинок находит правильно.