在Chrome中,我可以检查元素 - >右键单击 - >复制 - >复制Xpath(或选择器)。
现在,使用PHP Symfony我找到一个这样的元素,让我们假设它返回1个DOMElement节点:
$node = $crawler->filterXPath("//*[text()='Super dee question']");
现在,我如何才能收到CSS选择器,好像这个$ node是Google Chrome上的一个节点,我执行了上述步骤:右键单击并检查chrome页面上的$ node - >复制 - >复制Xpath。显然我不是在寻找包含' Super Dee'的Xpath,而是更像是
//*[@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
答案 0 :(得分:1)
至少在测试时,DOM Crawler允许以下语句:
$housingText = trim($crawler->filter("#household_housing option:selected")->text());
,其中household_housing
是下拉菜单的唯一id
,并返回所选文字。
答案 1 :(得分:0)
您可以像这样使用CSS属性选择器
$housingText = trim($crawler->filter('[id="household_housing"] option:selected')->text());
有关更多信息,https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors