Я пытаюсь получить полный HTML-код веб-сайта после его визуализации с помощью Javascript (act.js) в API WebDriver Facebook с Selenium и Chromedriver, и я не получаю отображаемый HTML-код с
$driver->executeScript("return document.getElementsByTagName('html')[0].innerHTML");
Я хочу получить HTML-код для очистки информации с сайта. Я попытался с помощью сна (10), а затем сохранил снимок экрана, получая исходный код страницы с помощью getPageSource и выполняя сценарий, который должен возвращать что-либо внутри тегов. Изображение ясно показывает, что на странице отображен javascript (как будто я вручную перехожу на URL-адрес и изучаю html, я вижу div и т. Д., Когда javascripts визуализировал страницу), но и сценарий, и источник dossent показывают эти div .
Я также пытался подождать с помощью следующей функции:
$driver->wait(10)->until(
WebDriverExpectedCondition::presenceOfAllElementsLocatedBy(
WebDriverBy::className('apartment-wrapper')
)
);
Но когда я тестирую, он ждет менее 1 секунды.
Я запускаю Selenium в SSH с помощью следующей команды:
xvfb-run java -Dwebdriver.chrome.driver=/path/to/chromedriver -jar /usr/local/bin/selenium-server-standalone.jar -debug true
И мой php код:
namespace Facebook\WebDriver;
require __DIR__ . '/vendor/autoload.php';
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Chrome\ChromeDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::htmlUnitWithJS(); {
// For Chrome
$options = new ChromeOptions();
$options->addArguments(array(
'--disable-extensions',
'--disable-gpu',
'--disable-dev-shm-usage',
'--no-sandbox',
'--window-size=1920,1080',
'--headless'
));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
}
$driver = RemoteWebDriver::create($host, $capabilities, 5000);
$driver->get('https://hdejendomme.dk/bolig?query=');
sleep(20);
$driver->takeScreenshot('test.jpg');
$myfile = fopen("script.txt", "wb");
fwrite($myfile, $driver->executeScript("return
document.getElementsByTagName('html')[0].innerHTML"));
fclose($myfile);
$myfile = fopen("source.txt", "wb");
fwrite($myfile, $driver->getPageSource());
fclose($myfile);
Я ожидаю получить все html, которые в конечном итоге отображаются в браузере, как это подтверждено на скриншоте, сохранены в файл .txt, но это не то, что я получаю. Я получаю только код сценария между тегами тела, а не обработанный html
Как я могу получить рендеринг HTML?