O posicionamento do elemento da página é a coisa mais importante na automação, e o Selenium WebDriver fornece muitos métodos para o posicionamento do elemento. Os testadores devem ser proficientes em vários métodos de posicionamento. O método de posicionamento mais fácil e mais estável é usado.
Leitura de conteúdo
Etapas de teste automatizadas
Durante os testes automatizados, teste a operação usual dos elementos da página do programa
1. Encontre o elemento da página da web e atribua -o a um objeto de armazenamento (WebElement)
2. Operações em objetos que armazenam elementos da página, como: Clique no link, insira caracteres na caixa de entrada, etc.
3. Verifique se os elementos da página atendem às expectativas
Através dessas três etapas, podemos concluir a operação de um elemento de página e encontrar o elemento da página é uma etapa muito importante. O elemento da página não pode ser encontrado, e isso não pode ser feito mais tarde
A complexidade prática da tecnologia da página da web dificulta a localização de um grande número de elementos de página. As pessoas geralmente não sabem como localizá -lo.
Método completo de localização
Defina um elemento da página da web usando a função FindElement do objeto Webdriver
Use a função FindElements para localizar vários elementos de uma página
Os elementos de página direcionados precisam ser armazenados usando o objeto webelement para uso subsequente
Os métodos comumente usados para localizar elementos da página são os seguintes, classificados pela recomendação
Método de posicionamento | Exemplo de implementação da linguagem Java |
Posicionamento de ID | driver.findElement (by.id ("valor do id")); |
Nome Posicionamento | driver.findElement (by.name ("Nome Value")); |
Todo o posicionamento de texto dos links | driver.findElement (por.linkText ("Todo o texto do link")); |
Algum posicionamento de texto de links | driver.findElement (por.PartialLinkText ("Texto parcial do link")); |
Posicionamento CSS | driver.findElement (por.cssselector ("expressão css"); |
Posicionamento XPath | driver.findElement (por.xpath ("xpath Expression")); |
Nome da classe Posicionamento | driver.findElement (by.className ("atributo de classe")); |
Tagname Tag Nome segmentação | driver.findElement (by.tagname ("tagname")); |
Método jQuery | Js.executescript ("return jQuery.find (" JQuery Expression ")") |
Como localizar
Ao usar o selanium webdriver para posicionamento de elementos, o método FindElement ou FindElements geralmente é usado para combinar a classe por retornar alças de elementos para localizar elementos
O método findElement () retorna um elemento. Se não for encontrado, uma exceção será lançada.
O método findElements () retorna vários elementos. Se não for encontrado, uma matriz vazia será devolvida e nenhuma exceção será lançada.
Como escolher um método de posicionamento
A estratégia é escolher um método de posicionamento simples e estável.
1. Quando o elemento da página tiver um atributo de identificação, tente usar o ID para localizá -lo. Caso contrário, escolha outro método de posicionamento
2. O CSSSELECTOR executa rápido, recomendado
3. Ao posicionar os hiperlinks, você pode considerar o LinkText ou ParciallinkText: mas deve -se notar que o texto geralmente muda, portanto, não é recomendável usá -lo.
4. Xpath tem a função mais poderosa. A velocidade de execução foi lenta naquele momento, porque você precisava encontrar todo o DOM; portanto, tente usá -lo o mínimo possível. Quando não houver nenhuma maneira, use XPath
Encontre elementos por id: por.id ()
A maneira mais recomendada de encontrar elementos através do ID dos elementos da página. O W3C Standard recomenda que os desenvolvedores forneçam atributos de identificação exclusivos para cada elemento da página.
Depois que um elemento recebe um atributo de ID exclusivo, é fácil localizar o elemento quando fazemos testes automatizados. O ID do elemento é usado como o atributo de identificação preferido, porque é a estratégia de identificação mais rápida.
Tomando a página inicial do Baidu como exemplo, o código de amostra HTML da caixa de pesquisa é o seguinte, seu ID é KW
<input type = "text" autocomplete = "off" maxlength = "100" id = "kw" name = "wd">
O código de amostra HTML para o elemento do botão de pesquisa "Baidu" é o seguinte, seu ID é SU
<input type = "submit" id = "su" value = "Baidu">
Java Código de amostra para encontrar elementos por id em selênio/webdriver é o seguinte
Driver webdriver = new Firefoxdriver (); driver.get ("http://www.baidu.com"); WebElement Searchbox = driver.findElement (por.id ("kw")); Searchbox.sendKeys ("Little Tank Blog Park"); WebElement SearchButton = Driver.FindElement (By.id ("SU")); SearchButton.subMit (); driver.close ();Encontre elementos pelo nome: por.name ()
Tomando a caixa de pesquisa da página inicial do Douban.com como exemplo, o código HTML de sua caixa de pesquisa é o seguinte, seu nome é: Q
<input type = "text" autocomplete = "OFF" name = "q" espaço local = "Livros, filmes, músicas, grupos, estações, membros" size = "12" maxlength = "60">
O código Java no WebDriver para pesquisar caixas de pesquisa na página inicial de Douban através do nome é o seguinte:
Driver webdriver = new Firefoxdriver (); driver.get ("http://www.douban.com"); WebElement Searchbox = driver.findElement (por.name ("q")); Searchbox.sendKeys ("Small Tank"); Searchbox.subMit ();Encontre elementos por tagname: por.tagname ()
Ao pesquisar elementos através do TagName, vários elementos serão retornados. Portanto, é necessário findElements ().
Driver webdriver = new Firefoxdriver (); driver.get ("http://www.cnblogs.com"); List <CeebElement> botões = driver.findElements (por.tagname ("div")); System.out.println ("Button:" + Button.Size ());NOTA: Se você usar o TagName, observe que o nome da tag de muitos elementos HTML é o mesmo.
Por exemplo, caixa de rádio, caixa de seleção, caixa de texto, caixa de senha. Essas tags de elemento são todas de entrada. Neste momento, o nome do tagname não pode obter com precisão os elementos que queremos. Você também precisa combinar o atributo de tipo para filtrar os elementos que queremos.
Driver webdriver = new Firefoxdriver (); driver.get ("http://www.cnblogs.com"); List <CeebElement> botões = driver.findElements (por.tagname ("input")); para (webElement webElement: botões) {if (webElement.getAttribute ("type"). Equals ("text")) {System.out.println ("O texto de entrada é:" + webElement.getText ()); }}Encontre elementos por ClassName
Tomando a pesquisa da página inicial de Taobao como exemplo, o código HTML de sua caixa de pesquisa é o seguinte:
<input autoComplete = "OFF" AutoFocus = "true" AccessKey = "S" Aria-Label = "Por favor, digite a pesquisa de texto" name = "q" id = "q" aria-haspopup = "true" aria-combobox = "list" role = "combinação" x-webkit-grammar = "construir: tradutor" TABINDEX "0"
O código de amostra Java é o seguinte
Driver webdriver = new Firefoxdriver (); driver.get ("http://www.taobao.com"); Thread.sleep (15000); WebElement SearchBox = driver.findElement (por.className ("Search-Bombobox-Input")); SearchBox.sendKeys ("Jaqueta Down"); Searchbox.subMit (); Nota: Ao usar o nome da classe para localizar elementos, às vezes você encontra um
Encontre elementos por linkText por.linkText ();
Posicionar elementos diretamente através das informações de texto sobre o hiperlink: p.
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f" name = "tj_login" onClick = "retornar false;"> login </a>
O código HTML é o seguinte
Driver webdriver = new Firefoxdriver (); driver.get ("http://www.baidu.com"); WebElement loginlink = driver.findElement (por.linkText ("login")); loginlink.Click ();Encontre elementos por parciallinkText ()
Este método é uma versão aprimorada do método anterior. Quando você deseja corresponder apenas a algumas palavras -chave, você pode usar esse método para localizar elementos através de algum texto de hiperlink.
O código HTML é o seguinte
Driver webdriver = new Firefoxdriver (); driver.get ("http://www.baidu.com"); WebElement loginlink = driver.findElement (por.PartialLinkText ("log")); loginlink.Click ();Nota: Ao usar esse método para localizar, o problema pode ser causado é que, quando você não sabe que um hiperlink contém "etc". O método FindElement retornará apenas o primeiro elemento encontrado e não retornará todos os elementos que atendem aos critérios.
Se você deseja obter todos os elementos que atendem aos critérios, só pode usar o método FindElements.
O exposto acima são as informações sobre o posicionamento do elemento Java Selenium. Continuaremos a adicionar informações relevantes no futuro. Obrigado pelo seu apoio!