Copia de a una por vez cada una de las líneas que se detallan a continuación.
Las líneas que comienzan con # no es necesario copiarlas ya que son comentarios y no tendrán ningún tipo de efecto:
Las líneas que comienzan con # no es necesario copiarlas ya que son comentarios y no tendrán ningún tipo de efecto:
#abrimos el navegador
browser=Selenium::WebDriver.for :firefox
#Nos dirigimos a la página de google
browser.navigate.to "http://www.google.com"
#Buscamos el campo de texto de búsqueda y lo guardamos en una variable llamada text_busqueda
text_busqueda = browser.find_element(:name, "q")
#Le enviamos a nuestro campo de texto de búsqueda un texto a buscar "Test automation y algo mas"
text_busqueda.send_keys("Test automation y algo mas")
Analicemos este código:
Tenemos al principio la creación de una instancia de navegador Firefox que la guardaremos en la variable browser que será con la que trabajaremos a lo largo de los pasos a realizar
browser=Selenium::WebDriver.for :firefox
browser es nuestra instancia, nuestra ventana del navegador y será con la que interactuémos a lo largo del test a ejecutar. browser es en realidad nuestro webdriver que contendrá todos los métodos que provee Selenium para trabajar con el navegador.
Para ver ésto podemos hacer lo siguiente:
browser.methods
Verás que se listan todos los métodos disponibles de Selenium Webdriver.
Entre todos los métodos que se listan se encuentra navigate.to :
browser.navigate.to "http://www.google.com"
simplemente este método lo que hace es indicarle al driver que navegue hasta la dirección indicada entre comillas. Aunque navigate tiene otros métodos disponibles. En lugar de indicarle la dirección a navegar a través de la instrucción to, puede indicarse las siguientes acciones:
browser.navigate.back
browser.navigate.forward
browser.navigate.refresh
back para volver, forward para ir hacia adelante y refresh para refrescar la página (F5).
La siguiente instrucción es:
text_busqueda = browser.find_element(:name, "q")
Aquí estamos usando el método find_element de Selenium WebDriver.
En nuestro caso podríamos traducir esta instrucción de la siguiente manera:
En nuestra instancia browser buscar el elemento (find_element) cuyo atributo name tiene el valor q y guardarlo en una variable denominada text_busqueda.
Veamos en detalle de que elemento estamos hablando con una imagen:
Como se puede observar en la imagen el elemento
<input id="gbqfq" ... type="text" value="" ..... name="q" ......>tiene un atributo name cuyo valor es q.
A través de ese atributo Selenium buscará el elemento y generara un objeto de tipo Element. Para corroborar esto último se puede escribir:
text_busqueda.class
Y debe aparecer algo similar a:
1.9.3p392 :012 > text_busqueda
=> #<Selenium::WebDriver::Element:0x..f9f68d484fc787c04 id="{b7a127f2-28bf-5e4c-8c2f-7b3fcc8fc32b}">
de esta manera tendremos el campo de texto identificado en nuestro programa/script bajo el nombre de text_busqueda y podremos aplicarle todos los métodos que nos provee Selenium Webdriver para éste tipo de elemento.
Para conocer que métodos podemos usar con el elemento podemos escribir:
text_busqueda.methods
Entre los métodos que se listan se encuentra nuestro próximo paso que es el uso del método send_keys que, en nuestro caso, es:
text_busqueda.send_keys("Test automation y algo mas")
basicamente, facil de intuir, lo que hace éste método es enviar los caracteres entre comillas al elemento text_busqueda. En definitiva, escribe el texto en el campo de texto text_busqueda.
Mas info sobre el método find_element:
Este método tiene muchas alternativas para buscar los elementos, me refiero a que tiene varias formas de encontrar elementos según los parámetros que se pasen dentro de los paréntesis.
Anotemos de manera generica el método como para luego ver las distintas variantes que admite:
browser.find_element(:localizador, "valor del localizador")
donde :localizador puede ser:
:id
Para un elemento de este estilo <input type="text" id="usuario".../>
find_element(:id, "usuario")
:class_name
Para un elemento de este estilo <input type="text" class="email".../>
find_element(:class_name, "email").
:tag_name
Para un elemento de este estilo <iframe src="..."></iframe>
find_element(:tag_name, "iframe")
:name
Para un elemento de este estilo <input type="text" name="password".../>
find_element(:name, "password")
:link_text
Para un elemento de este estilo <a href="http://www.linkedin.com">LinkedIn</a>
find_element(:link_text, "LinkedIn")
:partial_link_text
Para un elemento de este estilo <a href="http://www.blogger.com">Test automation y algo mas</a>
find_element(:partial_link_text, "automation")
Demasiado extenso para explicarlo en dos líneas. El método de ubicación de elementos a través de xpath tiene varias desventajas siendo las mas importantes el exceso de calculo computacional para llevarse a cabo, es decir que es mas lento y la mantenibilidad de los test ante cambios en la página. Como para tener una idea, xpath trabaja en base a las posiciones relativas de los elementos dentro de la página respecto de un punto inicial por lo que si se introduce un elemento nuevo o se elimina uno del documento el elemento a buscar por find_element puede no ser encontrado.
Si deseas conocer mas sobre xpath aquí tienes un tuto para ello. Para mi es complicarse la vida :s
Analicemos este código:
Tenemos al principio la creación de una instancia de navegador Firefox que la guardaremos en la variable browser que será con la que trabajaremos a lo largo de los pasos a realizar
browser=Selenium::WebDriver.for :firefox
browser es nuestra instancia, nuestra ventana del navegador y será con la que interactuémos a lo largo del test a ejecutar. browser es en realidad nuestro webdriver que contendrá todos los métodos que provee Selenium para trabajar con el navegador.
Para ver ésto podemos hacer lo siguiente:
browser.methods
Verás que se listan todos los métodos disponibles de Selenium Webdriver.
Entre todos los métodos que se listan se encuentra navigate.to :
browser.navigate.to "http://www.google.com"
simplemente este método lo que hace es indicarle al driver que navegue hasta la dirección indicada entre comillas. Aunque navigate tiene otros métodos disponibles. En lugar de indicarle la dirección a navegar a través de la instrucción to, puede indicarse las siguientes acciones:
browser.navigate.back
browser.navigate.forward
browser.navigate.refresh
back para volver, forward para ir hacia adelante y refresh para refrescar la página (F5).
La siguiente instrucción es:
text_busqueda = browser.find_element(:name, "q")
Aquí estamos usando el método find_element de Selenium WebDriver.
En nuestro caso podríamos traducir esta instrucción de la siguiente manera:
En nuestra instancia browser buscar el elemento (find_element) cuyo atributo name tiene el valor q y guardarlo en una variable denominada text_busqueda.
Veamos en detalle de que elemento estamos hablando con una imagen:
Como se puede observar en la imagen el elemento
<input id="gbqfq" ... type="text" value="" ..... name="q" ......>tiene un atributo name cuyo valor es q.
A través de ese atributo Selenium buscará el elemento y generara un objeto de tipo Element. Para corroborar esto último se puede escribir:
text_busqueda.class
Y debe aparecer algo similar a:
1.9.3p392 :012 > text_busqueda
=> #<Selenium::WebDriver::Element:0x..f9f68d484fc787c04 id="{b7a127f2-28bf-5e4c-8c2f-7b3fcc8fc32b}">
de esta manera tendremos el campo de texto identificado en nuestro programa/script bajo el nombre de text_busqueda y podremos aplicarle todos los métodos que nos provee Selenium Webdriver para éste tipo de elemento.
Para conocer que métodos podemos usar con el elemento podemos escribir:
text_busqueda.methods
Entre los métodos que se listan se encuentra nuestro próximo paso que es el uso del método send_keys que, en nuestro caso, es:
text_busqueda.send_keys("Test automation y algo mas")
basicamente, facil de intuir, lo que hace éste método es enviar los caracteres entre comillas al elemento text_busqueda. En definitiva, escribe el texto en el campo de texto text_busqueda.
Mas info sobre el método find_element:
Este método tiene muchas alternativas para buscar los elementos, me refiero a que tiene varias formas de encontrar elementos según los parámetros que se pasen dentro de los paréntesis.
Anotemos de manera generica el método como para luego ver las distintas variantes que admite:
browser.find_element(:localizador, "valor del localizador")
donde :localizador puede ser:
:id
Para un elemento de este estilo <input type="text" id="usuario".../>
find_element(:id, "usuario")
:class_name
Para un elemento de este estilo <input type="text" class="email".../>
find_element(:class_name, "email").
:tag_name
Para un elemento de este estilo <iframe src="..."></iframe>
find_element(:tag_name, "iframe")
:name
Para un elemento de este estilo <input type="text" name="password".../>
find_element(:name, "password")
:link_text
Para un elemento de este estilo <a href="http://www.linkedin.com">LinkedIn</a>
find_element(:link_text, "LinkedIn")
:partial_link_text
Para un elemento de este estilo <a href="http://www.blogger.com">Test automation y algo mas</a>
find_element(:partial_link_text, "automation")
:css
Para un elemento de este estilo <div id="web"><span class="curso">Ruby</span><span class="curso automation">localizando por css</span></div>
find_element(:css, "#web span.curso.automation")
:xpathDemasiado extenso para explicarlo en dos líneas. El método de ubicación de elementos a través de xpath tiene varias desventajas siendo las mas importantes el exceso de calculo computacional para llevarse a cabo, es decir que es mas lento y la mantenibilidad de los test ante cambios en la página. Como para tener una idea, xpath trabaja en base a las posiciones relativas de los elementos dentro de la página respecto de un punto inicial por lo que si se introduce un elemento nuevo o se elimina uno del documento el elemento a buscar por find_element puede no ser encontrado.
Si deseas conocer mas sobre xpath aquí tienes un tuto para ello. Para mi es complicarse la vida :s