2011-09-30 6 views
5

por ejemplo, dado el texto de un enlace, recupera el elemento de enlace del agujero.Selectores de visores: ¿alguna forma de obtener el elemento en la base del contenido en el interior?

yo probamos este:

$page = $this->getSession()->getPage(); 
$page->find('content', 'Italiano'); 

Pero dice:

Selector "content" is not registered.

EDITAR: después de comprobar los enlaces de las respuestas del everzet tengo esto:

$el = $page->find('named', array(
     'content', $this->getMainContext()->getSession()->getSelectorsHandler()->xpathLiteral('Pound'))); 

$el->click(); 

pero Recibo este error sobre la función click():

When I choose "Pound sterling" # 

MyFirm\FrontendBundle\Features\Context\CurrencyControllerContext::iChoose()

error:_click(_byXPath("(//html/./descendant-or-self::*[contains(normalize-space(.), 'Pound')])[1]")) TypeError: parent.tagName is undefined ([object HTMLHtmlElement],"A",1)@http://myfirm.localhost/s/spr/concat.js:3286 ([object 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/s/spr/concat.js:3016 ()@http://myfirm.localhost/s/spr/concat.js:3016 @http://myfirm.localhost/s/spr/concat.js:2822

<a 

href='/s/dyn/Log_getBrowserScript?href=null&n=3286'>Click for browser script

Este es el comienzo de la salida de 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]" 

Y la salida de $el->getTagName() es 'html'.

¿Eso es porque estoy tratando de hacer clic en algo que no es un elemento sino solo contenido? En ese caso, ¿alguna forma de obtener el elemento del contenido?

Respuesta

2

No utilice el selector de contenido. Porque en casi todos los casos brindará resultados que usted no espera. Por ejemplo, cuando está haciendo content(Pound), espera que le devuelva un elemento que contenga este texto. La realidad es que cada elemento padre del objetivo uno contiene su texto "Libra", que incluye <html/>. Es por eso que se obtiene <html/> al final ;-)

selectores Minks están bien explicados en el manual:

3

que puedes usar:

$page = $this->getSession()->getPage(); 
$page->find('css', 'Italiano'); 

Este está usando los selectores de CSS, ¡y funciona como una magia! Pero asegúrese de que 'Italiano' se refiera a un elemento en la página (yo usaría '#Italiano' si es una ID).

Puede leer la documentación de páginas de recorrido here.

+0

No es trabajo para mí – delirehberi

+0

He actualizado esta respuesta con la documentación de páginas intermedias, ya que es la respuesta más útil hasta el momento. – Jimbo

+0

Muchas gracias @Jimbo –

Cuestiones relacionadas