Symfony 水貂选择器:有什么方法可以获取里面内容的基本元素吗?
例如,给定链接的文本,检索孔链接元素 我试过这个:Symfony 水貂选择器:有什么方法可以获取里面内容的基本元素吗?,symfony,bdd,Symfony,Bdd,例如,给定链接的文本,检索孔链接元素 我试过这个: $page = $this->getSession()->getPage(); $page->find('content', 'Italiano'); 但它说: 选择器“内容”未注册 编辑:查看everzet答案的链接后,我得到以下信息: $el = $page->find('named', array( 'content', $this->getMainContext()->getSess
$page = $this->getSession()->getPage();
$page->find('content', 'Italiano');
但它说:
选择器“内容”未注册
编辑:查看everzet答案的链接后,我得到以下信息:
$el = $page->find('named', array(
'content', $this->getMainContext()->getSession()->getSelectorsHandler()->xpathLiteral('Pound')));
$el->click();
但是我得到了一个关于click()
函数的错误:
MyFirm\FrontendBundle\Features\Context\CurrencyControllerContext::iChoose()
错误:_click(_byXPath((//html//substant或self::*[contains(normalize space(.)),
“英镑”)))[1]”)
TypeError:父标记名未定义
([对象]
HtmlHtmlement],“A”,1)@http://myfirm.localhost/s/spr/concat.js:3286
([对象]
HtmlHtmlement],“A”)@http://myfirm.localhost/s/spr/concat.js:3762
([对象]
HTMLHtmlElement])@http://myfirm.localhost/s/spr/concat.js:331
([object HTMLHtmlElement],false,false,(void
0))@http://myfirm.localhost/s/spr/concat.js:708
([对象]
HTMLHtmlElement])@http://myfirm.localhost/s/spr/concat.js:478
()@http://myfirm.localhost/s/spr/concat.js:3016
()@http://myfirm.localhost/s/spr/concat.js:3016
@http://myfirm.localhost/s/spr/concat.js:2822
<a
$el->getTagName()
的输出是“html”
这是因为我试图单击的不是元素而是内容吗?在这种情况下,是否可以从内容中获取元素?不要使用内容选择器。因为在几乎任何情况下,它都会带来你意想不到的结果。例如,当您执行
content(Pound)
时,您希望它将返回一个包含此文本的元素。事实是,目标一的每个父元素都包含您的“磅”文本,包括
。这就是为什么最后会出现
;-)
手册中详细介绍了水貂选择器:
$page = $this->getSession()->getPage();
$page->find('css', 'Italiano');
这是使用CSS选择器,它就像一个魔术!
但要确保“意大利语”指的是页面上的一个元素(如果是ID,我会使用“#意大利语”)
您可以阅读遍历页面文档。我已经用遍历页面文档更新了这个答案,因为这是迄今为止最有用的答案。非常感谢@Jimbo
object(Behat\Mink\Element\NodeElement)#438 (2) {
["xpath":"Behat\Mink\Element\NodeElement":private]=>
string(74) "(//html/./descendant-or-self::*[contains(normalize-space(.), 'Pound')])[1]"
$page = $this->getSession()->getPage();
$page->find('css', 'Italiano');