Click here to edit title

Click here to edit subtitle

Blog

Xpath

Posted by JJ on May 1, 2014 at 9:20 AM

Vamos entender um pouquinho sobre XPath


Você precisa fornecer qualquer elemento localizador(como id, nome, caminho css, XPath, etc) na coluna de destino do selenium, para localizar esse elemento específico e executar alguma ação. Se você conhece Selenium IDE, então você sabe que às vezes não contém elementos de identificação ou nome assim o seu teste para ali. O XPath é uma outra maneira de localizar o elemento e você pode usá-lo como uma alternativa de identificação ou nome do elemento.

 

XPath no documento XML mostra a direção do local do elemento através de nós e atributos. Vamos tentar entender como identificar XPath do elemento com exemplos.

 


A imagem acima é tirada de http://www.wikipedia.org/.


               


Olhe para a imagem, existem três campos

  1. Caixa de texto Input
  2. selecionar cair para baixo
  3. botão de entrada.


E abaixo desses campos há expansão de nós XML relativas através firebug. Como você vê na imagem, você pode usar "id = searchInput" ou "name = search" para identificar a caixa de entrada de texto para digitar algo nele como exemplo dado abaixo.

 

New Test
CommandTargetValue
openhttp://www.wikipedia.org/
typeid=searchInputID Example

Ou

New Test
CommandTargetValue
openhttp://www.wikipedia.org/
typename=searchName Example


Tutorial XPath


Agora, se você quer identificar o mesmo elemento (caixa de texto de entrada) com XPath, então você pode usar qualquer uma sintaxe abaixo dada para a coluna de destino com o comando tipo no exemplo acima.

 

Localizando elemento usando XPath com exemplos caixa de texto de entrada para

 

1. Identificar XPath usando caminhocompleto do XML

xpath://body/div[3]/form/fieldset/input[2]/ / / /

Aqui = / / body é o nó raiz principal, / div [3] descreve a terceira div nó filho do nó pai corpo, / form descreve a form nó filho do nó pai div [3] / fieldset descreve o fieldset nó filho de form nó pai, / input [2]descreve a entrada do segundo nó filho do nó pai fieldset.

 

New Test
CommandTargetValue
openhttp://www.wikipedia.org/
typexpath://body/div[3]/form/fieldset/input[2]Xpath Example1


 

2. EscritaXPath usando last()

xpath://body/div[3]/form/fieldset/input[last()-2]  / / / /

Aqui = / input [last () -2] descreve o nó de entrada superior 3 (entrada [2]) a partir de último nó de entrada.

xpath://body/div[3]/form/fieldset/*[last()-3]  / / / /

Aqui / * [last () -3] descreve o quarto nó superior(entrada [2]) da última nó.

 

New Test
CommandTargetValue
openhttp://www.wikipedia.org/
typexpath://body/div[3]/form/fieldset/input[last()-2]Xpath Example2



3.Localizador XPath usando @ e atributo

XPath= / / body / div [3] / form / fieldset / input [@ type = 'pesquisar']   // / /

Aqui / input [@ type ='pesquisar'] descreve o nó de entrada com atributo type = 'pesquisar'


New Test
CommandTargetValue
openhttp://www.wikipedia.org/
typexpath://body/div[3]/form/fieldset/input[@type='search']Xpath Example3


 

4.Expressão XPath usando @ e atributo

XPath= / / corpo / div [3] / form / fieldset / input [@ accesskey = 'F']   // / /

Aqui / input [@ accesskey = 'F'] descreve o nó com atributo de entrada @accesskey = 'F '.


New Test
CommandTargetValue
openhttp://www.wikipedia.org/
typexpath://body/div[3]/form/fieldset/input[@accesskey='F']Xpath Example4


 

5.Sintaxe XPath usando @ e atributo

XPath= / / input [@ accesskey = 'F']   / / / /

Aqui / / input [@ accesskey = 'F'] descreve o nó de entrada com [email protected] accesskey = 'F' . Experimente por usá-lo em exemplo acima.

 


6.Exemplo XPath usando @ e atributo

XPath= / / input [@ type = 'pesquisar']    / / / /

Aqui / input [@ type = 'pesquisar'] descreve o nó de entrada com atributo type = 'pesquisar'.  Experimente, utilizando-o no exemplo acima.

 


7. XPathXML usando / descendente :: palavra-chave

 

xpath://div[@class='search-container']/descendant::input[@accesskey='F']   // / /

 Aqui eu usei descendente no meio. Neste caso eu descrevi apenas começando div nó com classe de atributo = 'pesquisar-container "e de entrada do nó final com accesskey = atributo' F'. Portanto, não precisa descrever entre os nós.  Experimente por usá-lo no exemplo acima.

 


8. XPathexemplo consulta usando contém palavra-chave

XPath= / / input [contains (@ id ", searchInput")]   // / /

Aqui contém palavra-chave para identificar atributo id com o texto "searchInput".  Experimente, utilizando-o no exemplo acima.

 


9. XPathusando e com atributos

xpath://input[contains(@id,"searchInput") and contains(@accesskey,"F")]   ")]   / / //

Neste exemplo, ele vai olhar para dois atributos no nó de entrada.  Experimente por usá-lo no exemplo acima


10. XMLvalor valor XPath usando posição ()

xpath://div[@class='search-container']/descendant::input[position()=2]   // / /

Este XPath irá selecionar nó de entrada que está na posição de número 2 e é a caixa de texto de entrada para como mostrado na imagem. Experimente por usá-lo no exemplo acima.

 


11.Usando starts-with palavras chave

xpath://input[starts-with(@type,"s")]        // / /  

 Neste exemplo, ele vai encontrar nó de entrada com o atributo é 'tipo' e seu valor está começando com 's '(aqui ele vai ficar type =' search ' ).

 


12.Usando OR (|) com condição XPath

xpath://input[@accesskey='F'] |//input[@id='searchInput']

xpath://input[@accesskey='F' or @id='searchInput'] / / / /

 

Em ambos estes exemplos, ele vai encontrar a caixa de entrada de texto com accesskey = 'F' ou @ id ='searchInput'. Se qualquer um encontrado, então ele irá localizar. Muito útil quando os elementos aparecem como alternativa.


13.Usando curinga * com a encontrar elemento XPath

XPath = / / * [@ accesskey = 'F'] 


14.Encontrar enésimo elemento filho de pai

XPath = / / corpo / * [3] / form / fieldset / * [2]    / / / /

Este XPath é a caixa de texto para pesquisa. Aqui, / * [3] descreve o terceiro elemento filho do corpo, que é div [3]. Do mesmo jeito * [2] descreve o segundo elemento filho de fieldset que é de entrada [2]


Todos os exemplos acima são caixa de texto de entrada para. Agora deixe-me escrever XPath para drop down.

 

ExemplosXPath queda para baixo

1. xpath://body/div[3]/form/fieldset/select

2. xpath://body/div[3]/form/fieldset/select[last()]

3. xpath://body/div[3]/form/fieldset/select[@id='searchLanguage']

4. xpath://body/div[3]/form/fieldset/select[@name='language']

5. xpath://div[@class='search-container']/descendant::select[@name='language']

6. xpath://select[contains(@id,"searchLanguage")]

7. xpath://div[@class='search-container']/descendant::select[position()=1]

8. xpath://body/div[3]/form/fieldset/select[count(*)>1]

 

New Test
CommandTargetValue
openhttp://www.wikipedia.org/
selectxpath://div[@class='search-container']/descendant::select[position()=1]label=English



Outros Exemplos de XPath


1.Encontrar XPath para o link target 'url'

//a[@href='//meta.wikimedia.org/wiki/List_of_Wikipedias']  / / / /

 Este exemplo XPath vai encontrar ligação com determinada URL (/ / meta.wikimedia.org / wiki /List_of_Wikipedias) na página.

 


2. Encontrar XPath do elemento com nenhuma criança

xpath://img[count(*)=0]   ///// /

Este XPath é para logotipo do texto wikipedia que é exibição na parte superior da página. Este XPath vai encontrar esse elemento de imagem que não tem qualquer elemento filho. Aqui nó imagem é passado e não tem qualquer elemento filho.

 

xpath://div[2]/descendant::img[count(*)=0]   / / / / 

 Este XPath é imagem do logotipo wikipedia que é exibição sob logotipo para texto. 

 



Artigo traduzido de: http://software-testing-tutorials-automation.blogspot.com.br/2013/06/xpath-tutorials-identifying-xpath-for.html

Categories: Artigos, Conceitos, Automatizacao

Post a Comment

Oops!

Oops, you forgot something.

Oops!

The words you entered did not match the given text. Please try again.

Already a member? Sign In

9 Comments

Reply Smithe452
5:15 AM on February 3, 2017 
Nice post. I was checking constantly this blog and I am impressed! Extremely useful information specially the last part ddbffbddccaekcka
Reply Pharmk222
6:21 PM on February 3, 2017 
Hello!
Reply Pharmc200
12:29 AM on February 5, 2017 
Hello!
Reply Pharmc926
12:38 PM on February 6, 2017 
Hello!
Reply Pharmd767
1:01 AM on February 8, 2017 
Hello!
Reply Pharmk246
6:53 AM on February 8, 2017 
Hello!
Reply Pharmf910
1:05 PM on February 9, 2017 
Hello!
Reply Pharmd124
7:03 AM on February 11, 2017 
Hello!
Reply Pharmb129
1:03 PM on February 12, 2017 
Hello!