2010-02-04 12 views
21

Ist es möglich, den Wert der Basis-URL aus einem Selenium-Skript (ein einfaches HTML-gespeichertes Skript von Selenium IDE) abrufen?In Selenium IDE, wie der Wert der Basis-URL erhalten

Was ich versuche, ist die aktuelle URL mit assertLocation zu überprüfen. Aber assertLocation gibt die absolute URL zurück. Ich möchte die aktuelle URL mit einer relativen URL vergleichen, ohne eine * am Anfang der URL verwenden zu müssen.

Ich hätte gerne Zugriff auf die Basiszeichenfolge, weil ich in der Lage sein möchte, die Tests auf verschiedenen Websites (verschiedene Dev-Sites + Produktionsstandort) auszuführen, aber wenn ich die * verwende, kann ich nicht nach dem Stamm suchen Seite (*/ für jede Seite wäre wahr, die mit einem / endet ...)

Dies ist, was ich im Moment tun:

| assertLocation | */einige-Seite | |

Das ist, was ich tun möchte:

| assertLocation | baseURL + "/ einige-Seite" | |

Hinweis: ist es sogar möglich,:

  1. Verwendung eine Variable im Ziel;
  2. verketten eine Variable und eine Zeichenfolge?

Antwort

18

Versuchen Sie, diese

storeEval|window.document.domain|host 
assertLocation|http://${host}/some-page| 
+0

Dank, es funktionierte ganz gut! Da die Produktionsstätte Port 80 verwendet, die Dev-Sites jedoch benutzerdefinierte Ports verwenden, habe ich Folgendes verwendet: storeEval | window.document.domain | Host storeEval | window.location.port | Port assertLocation | regexp: http: // $ {host} (| $ {port})/some-Seite $ (sorry für die schlechte Formatierung) – Emilien

+1

@Emilien: Sie können Graviszeichen verwenden (') Code in den Kommentaren zu bezeichnen. Siehe [diese Hilfeseite] (http://stackoverflow.com/editing-help#comment-formatting). –

+0

Danke Roy für den Tipp – Emilien

6

Sie auch Ihre Basis-Seite öffnen und verwenden können storelocation die aktuelle Position in eine Variable setzen:

|open|/|| 
|storeLocation|host|| 
|assertLocation|${host}somepage.html 

Bonus: hier ist, wie ich die entsprechende heraus SSL-Adresse

|storeEval|window.document.location.toString().replace(new RegExp("^http://([^:]+):80"), "https://$1:40");|hostSSL| 
+1

Sie könnten Ihr storeEval oben vereinfachen, indem Sie von storedVars ['host'] statt window.document.location beginnen ... –

0
<tr> 
<td>storeLocation</td> 
<td>url</td> 
<td></td> 
</tr> 
<tr> 
<td>echo</td> 
<td>${url}</td> 
<td></td> 
</tr> 
2

Die obigen Lösungen verursachen Probleme mit meiner Entwicklungsumgebung, die sich auf einem Nicht-Standard-Port befindet. Diese Lösung kann auch mit https helfen. Wenn Sie wirklich die Basis-URL wollen:

<tr> 
<td>storeEval</td> 
<td>selenium.browserbot.baseUrl</td> 
<td>baseurl</td> 
</tr> 
<tr> 
<td>echo</td> 
<td>${baseurl}</td> 
<td></td> 
</tr> 
0

können Sie Selenium-Treiber verwenden, um die aktuelle URL als String zu erhalten, dann das Objekt in ein URL-Objekt konvertieren. Sobald Sie dies getan haben, verfügt die Java-URL-Klasse über einige Methoden, mit denen Sie Teile der URL abrufen können.

1

Mit Selenium IDE ist dies möglich, ohne den Wert $ (Host) zu speichern.

Command: open 
Target: */login 
Value: 

Dieser Code-Schnipsel-String-Match Muster in der Selenium Core- [Source].

0

Nach dem Versuch, den IDE-Befehl verifyLocation selen zu verwenden (der nur den zu prüfenden Hostnamen enthält und Teile der Abfragezeichenfolge enthält, die zur Laufzeit sehr zufällig sein kann), kann die aktuelle URL und der Pfad überprüft werden ich will, ist die flexibelste (bisher) ist die „verifyEval“ Befehl und verwenden Sie Javascript zu verwenden, um den Teil der uRL zu analysieren, zu testen:

verifyEval | window.location.pathname=="/my/stuff" | true 

Sie können jede der Lage Eigenschaften setzen, der JavaScript unterstützt und diese testen (siehe https://gist.github.com/jlong/2428561) ...

Command: verifyEval 
Target: window.location.pathname=="/my/stuff" 
Value: true 

oder zum Beispiel:

Command: verifyEval 
Target: window.location.hostname=="example.com" 
Value: true 

Oder fühlen Sie sich frei zu machen Kombinationen

Command:verifyEval 
Target: window.location.protocol+'//'+window.location.hostname+window.location.pathname=='http://example.com/my/stuff' 
Value:true 
Verwandte Themen