Manipulando Páginas

Uma vez que você pegue um elemento da página, você vai querer manipulá-lo. Você pode também interagir com a página, que é coberta no próximo capitulo.

Obtendo o nome da tag

O método NodeElement::getTagName lhe permite obter o nome da tag do elemento. Este nome é sempre retornado em letras minúsculas.

$el = $page->find('css', '.something');

// obter o nome da tag:
echo $el->getTagName(); // exibe 'a'

Acessando atributos HTML

A classe NodeElement lhe dá acesso aos atributos HTML do elemento.

NodeElement::hasAttribute
Verifica se o elemento tem um determinado atributo.
NodeElement::getAttribute
Obtém o valor de um atributo.
NodeElement::hasClass
Verifica se o elemento tem uma dada classe (convenientemente envolvido em torno de getAttribute('class')).
$el = $page->find('css', '.something');

if ($el->hasAttribute('href')) {
    echo $el->getAttribute('href');
} else {
    echo 'Esta âncora não é um link. Ela não tem um href.';
}

Elemento de Conteúdo e Texto

A classe Element provê acesso ao conteúdo dos elementos.

Element::getHtml
Obtém o HTML interno do elemento, por exemplo todos os filhos do elemento.
Element::getOuterHtml
Obtém o HTML exterior do elemento, por exemplo incluindo o próprio elemento.
Element::getText
Obtém o texto do elemento.

Nota

getText() irá retirar tags e caracteres não impressos fora da resposta, incluindo linhas novas. Então ele basicamente retorna o texto, que o usuário vê na página.

Verificando a visibilidade de um Elemento

O método NodeElement::isVisible permite checar se o elemento está visível.

Acessando o estado do formulário

A classe NodeElement permite o acesso ao estado de elementos do formulário:

NodeElement::getValue
Obtém o valor do elemento. Veja Interagindo com formulários.
NodeElement::isChecked
Verifica se o checkbox ou o radio button está checado.
NodeElement::isSelected
Verifica se o elemento <option> está selecionado.

Métodos de atalho

A classe TraversableElement provê uns poucos métodos de atalho permitindo a busca de um elemento filho na página e checar o estado dele imediatamente:

TraversableElement::hasCheckedField
Olha para uma checkbox (veja findField) e checa se ela está checada.
TraversableElement::hasUncheckedField
Olha para um checkbox (veja findField) e checa se ele não está checado.