例如,给定链接的文本,检索孔链接元素.
我试过这个:
$page = $this->getSession()->getPage();
$page->find('content', 'Italiano');
Run Code Online (Sandbox Code Playgroud)
但它说:
选择器"内容"未注册.
编辑:检查了everzet的答案的链接我有这个:
$el = $page->find('named', array(
'content', $this->getMainContext()->getSession()->getSelectorsHandler()->xpathLiteral('Pound')));
$el->click();
Run Code Online (Sandbox Code Playgroud)
但我得到关于click()
功能的这个错误:
Run Code Online (Sandbox Code Playgroud)When I choose "Pound sterling" #
MyFirm\FrontendBundle \功能\背景\ CurrencyControllerContext :: iChoose()
错误:_click(_byXPath("(// html /./ descendant-or-self ::*[contains(normalize-space(.),'Pound')])[1]"))TypeError:parent.tagName is未定义的([对象HTMLHtmlElement], "A",1)@http://myfirm.localhost/ 小号 /spr/concat.js:3286([对象HTMLHtmlElement], "A")@http://myfirm.localhost/ s /spr/concat.js:3762([object HTMLHtmlElement])@http://myfirm.localhost/ s /spr/concat.js:331([object HTMLHtmlElement],false,false,(void 0))@ http ://myfirm.localhost/ s /spr/concat.js:708([object HTMLHtmlElement])@http://myfirm.localhost/ s /spr/concat.js:478()@http://myfirm.localhost/小号 /spr/concat.js:3016()@http://myfirm.localhost/ 小号 /spr/concat.js:3016 @http://myfirm.localhost/ 小号 /spr/concat.js:2822
Run Code Online (Sandbox Code Playgroud)<a
href ='/ s/dyn/Log_getBrowserScript?href = null&n = 3286'> 点击浏览器脚本
这是输出的开始var_dump($el)
:
object(Behat\Mink\Element\NodeElement)#438 (2) {
["xpath":"Behat\Mink\Element\NodeElement":private]=>
string(74) "(//html/./descendant-or-self::*[contains(normalize-space(.), 'Pound')])[1]"
Run Code Online (Sandbox Code Playgroud)
输出$el->getTagName()
是'html'.
是因为我试图点击不是元素而只是内容的东西吗?在这种情况下,从内容中获取元素的任何方法?
不要使用内容选择器。因为几乎在任何情况下它都会提供您意想不到的结果。例如,当您执行 时content(Pound)
,您期望它返回一个包含此文本的元素。现实情况是,目标元素的每个父元素都包含您的“Pound”文本,包括<html/>
. 这就是你到达<html/>
最后的原因;-)
Minks 选择器在手册中有很好的解释:
归档时间: |
|
查看次数: |
8591 次 |
最近记录: |