В Chrome я могу проверить элемент -> щелкните правой кнопкой мыши -> скопировать -> скопировать Xpath (или селектор).
Теперь, используя PHP Symfony, я нахожу такой элемент, давайте предположим, что он возвращает 1 узел DOMElement:
$node = $crawler->filterXPath("//*[text()='Super dee question']");
Теперь, как я могу получить селектор CSS, как если бы этот узел $ был узлом в Google Chrome, и я проделал шаги, описанные выше: щелкните правой кнопкой мыши и осмотрите $ узел на странице chrome -> copy -> copy Xpath. Очевидно, я не ищу Xpath, содержащий Super Dee, но что-то вроде
//*[@id="product_addtocart_form"]/div[2]/h1
РЕДАКТИРОВАТЬ: кажется, что я могу сделать DOMNode :: getNodePath (void), однако при использовании Chrome он обычно может определить ближайший @id и использовать его, что гораздо точнее, чем DOMNode :: getNodePath (void), который выглядит примерно так:
/html/body/div[2]/div/div[1]/div[2]/div[2]/div[3]/div[1]/form/div[2]/h1
Сканер DOM, по крайней мере при тестировании, допускает такие утверждения как:
$housingText = trim($crawler->filter("#household_housing option:selected")->text());
, где household_housing
это уникальный id
раскрывающегося списка и возвращает выделенный текст.
Других решений пока нет …