XPath selénio proporciona o posicionamento nome de método:
driver.find_element_by_xpath (expressões XPath)
xpath está posicionada como uma estrutura de árvore HTML todo. nó HTML como uma raiz. Página entre nós e os outros nós podem ter ancestral, há uma relação entre os pais, irmãos, e os seus descendentes, similar à relação entre nossa família humana.
XPath gramática orientação básica
Em primeiro lugar, o posicionamento absoluto
Características: 1 barra single / começando; página 2 do elemento de raiz (tag HTML) inicia, em estrita conformidade com a posição e ordem dos elementos na página HTML olhar para baixo
Tais como:
driver.find_element_by_xpath ( " / html / corpo / div [2] / div [1] / div / div [1] / div / forma / extensão [1] / input " )
Em segundo lugar, o posicionamento relativo
Características: 1 com uma barra dupla // no início; 2 não considerar os elementos de caminho de página e posição absoluta entre; 3 a considerar se há conformidade com os elementos de expressão pode ser ....
Em geral, utilizar o posicionamento em relação aos elementos de posicionamento. Para introduzir a seguinte expressão sob o posicionamento relativo prevalecente.
2.1 Localização nó do nome do atributo tag +
Sintaxe: // nome do tag [@ name atributo = valor do atributo]
Tais como:
Agora você deseja fazer referência a id "j_password" elemento de entrada, você pode escrever assim:
ele_password = driver.find_element_by_xpath ( " // * [@ id = 'J_login_form'] / dl / dt / input [@ id = 'j_password'] " )
Outra maneira de escrever:
ele_password = driver.find_element_by_xpath ( "// * [@ id = 'J_login_form'] / * / * / input [@ id = 'j_password']")
2.2. Índice elemento de combinação (subscrito) posicionado
Tais como:
ele_password = driver.find_element_by_xpath ( "// * [@ id = 'J_login_form'] / * / * / input [2] “)
2.3. Pelo secção correspondente valor de atributo
Sintaxe: nome // tag [contém (@ name atributo, parte do valor do imóvel)], // nome do tag [starts-with (@ name atributo, parte do valor do imóvel)], // nome do tag [Termina com (@ name atributo , valor de atributo parte)]
a.starts-com exemplos: // input [começa-com (@ id, 'ctrl')] analítica: valor do atributo correspondente do ctrl início
b.ends-com exemplos: // entrada [extremidades com-(@id, '_ nome de utilizador')] analítica: nomeUsuário valor de atributo correspondente da extremidade
c.contains () Exemplos: // entrada [contém (@ id, 'nome de utilizador')] Analítica: Nome de atributo de valor correspondente compreendendo
Da seguinte forma:
driver.find_element_by_xpath ( “// a [contém (@href, 'Sair')]”)
driver.find_element_by_xpath ( “// A [-extremidades com (@href, 'Sair')]”)
driver.find_element_by_xpath ( “// A [starts-with (text (), '退')]”)
2.4 O uso de jogos de texto
Funções: texto ()
Sintaxe: texto Todos os jogos: // nome do tag [text () = text]
seção de texto correspondente - compreendendo: // nome do tag [contém (text (), a parte do texto)]
Código de amostra é a seguinte:
driver.find_element_by_xpath ( "// a [text ()," Exit "]") # jogo texto completo
driver.find_element_by_xpath ( "// a [contém (text ()," a ")]) coincidir com o texto parte #
2,5, utilizando a expressão eixo segmentação
Axis Nome computação:
ancestral: ancestral nó, incluindo o nó pai
parent: o pai nó
anterior: o rótulo do elemento de nó atual atrás (antes de páginas HTML) de todos os nós
precedente-irmão: os elementos do rótulo do nó actual antes de todos os irmãos (mesmo nível)
seguinte: o rótulo do nó atual do elemento após todos os nós
seguindo-irmão: o rótulo dos elementos nó atual depois de todos nós irmãos (pares)
Usando a sintaxe: Axis :: nome do nó
Consistente com o posicionamento anterior antes e depois, pode ser separado por /.
Por exemplo:
// div // tabela / td / anterior :: td / seguinte-sibling :: a // [contém (text (), " naturalmente")]
# indica todos nós // div // mesa de frente / td / path encontrar o nome do nó para o td nó, um irmão no mesmo nível contém caminho descendente texto