testing - guru99 - selenium rc vs webdriver
En Selenium IDE, cómo obtener el valor de la URL base (7)
Después de luchar con el uso del comando IDE de selelismo verifyLocation (que solo le proporciona el nombre de host para verificar e incluye partes de la cadena de consulta que pueden ser ampliamente aleatorias en tiempo de ejecución) la forma de verificar la URL actual y la ruta más flexible (hasta ahora) es usar el comando "verifyEval" y usar javascript para analizar la parte de la url que quiero probar:
verifyEval | window.location.pathname=="/my/stuff" | true
Puede poner cualquiera de las propiedades de ubicación que javascript admite y probarlas (consulte https://gist.github.com/jlong/2428561 ) ...
Command: verifyEval
Target: window.location.pathname=="/my/stuff"
Value: true
O por ejemplo:
Command: verifyEval
Target: window.location.hostname=="example.com"
Value: true
O siéntase libre de hacer combinaciones
Command:verifyEval
Target: window.location.protocol+''//''+window.location.hostname+window.location.pathname==''http://example.com/my/stuff''
Value:true
¿Es posible recuperar el valor de la url base desde dentro de una secuencia de Selenium (una secuencia de comandos sencilla guardada en HTML de Selenium IDE)?
Lo que intento hacer es verificar la URL actual usando assertLocation
. Pero assertLocation
devuelve la url absoluta . Me gustaría comparar la URL actual con una URL relativa sin tener que usar un *
al comienzo de la url.
Me gustaría tener acceso a la cadena base porque quiero poder ejecutar las pruebas en diferentes sitios (varios sitios dev + sitio de producción), pero si uso el *
no puedo verificar la página raíz ( */
Sería cierto para cada página que termine con un /
...
Esto es lo que hago actualmente:
| assertLocation | * / some-page | |
Esto es lo que me gustaría hacer:
| assertLocation | baseURL + "/ some-page" | |
Nota: ¿es posible?
- usa una variable en el objetivo;
- concatenar una variable y una cadena?
Las soluciones anteriores causan problemas con mi entorno de desarrollo en un puerto no estándar. Esta solución también puede ayudar con https. Si realmente quieres la url base:
<tr>
<td>storeEval</td>
<td>selenium.browserbot.baseUrl</td>
<td>baseurl</td>
</tr>
<tr>
<td>echo</td>
<td>${baseurl}</td>
<td></td>
</tr>
Prueba esto
storeEval|window.document.domain|host
assertLocation|http://${host}/some-page|
Puede usar el controlador Selenium para obtener la Url actual como una Cadena, luego convierta el objeto en un objeto URL. Una vez que haya hecho eso, la clase URL de Java tiene algunos métodos que puede usar para obtener partes de la URL.
String url = driver.getCurrentUrl();
String domain = getDomainName( url );
public static String getDomainName( String url ) throws URISyntaxException {
URI uri = new URI(url);
String domain = uri.getHost();
return domain.startsWith("www.") ? domain.substring(4) : domain;
}
También puede abrir su página base y usar storeLocation para poner la ubicación actual en una variable:
|open|/||
|storeLocation|host||
|assertLocation|${host}somepage.html
Bono: así es como descubrí la URL de SSL correspondiente
|storeEval|window.document.location.toString().replace(new RegExp("^http://([^:]+):80"), "https://$1:40");|hostSSL|
Usando Selenium IDE, esto es posible sin almacenar el valor de $ (host).
Command: open
Target: */login
Value:
Este fragmento de patrones de coincidencia de cadena disponible en Selenium Core [Source] .
<tr>
<td>storeLocation</td>
<td>url</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${url}</td>
<td></td>
</tr>