web-dev-qa-db-ja.com

Selenium IDEで、ベースURLの値を取得する方法

Seleniumスクリプト(Selenium IDEからのプレーンなHTML保存スクリプト)内からbase urlの値を取得することは可能ですか?

私がやろうとしているのは、assertLocationを使用して現在のURLを確認することです。ただし、assertLocation絶対URLを返します。 URLの先頭に*を使用せずに、現在のURLを相対URLと比較したいと思います。

さまざまなサイト(さまざまな開発サイト+本番サイト)でテストを実行できるようにしたいので、ベース文字列にアクセスしたいのですが、*を使用すると、ルートを確認できません。ページ(*/は、/...で終わる各ページに当てはまります)

これは私が現在行っていることです:

| assertLocation | */some-page | |

これが私がやりたいことです:

| assertLocation | baseURL + "/ some-page" | |

注:次のことも可能ですか?

  1. ターゲットで変数を使用します。
  2. 変数と文字列を連結しますか?
21
Emilien

これを試して

storeEval|window.document.domain|Host
assertLocation|http://${Host}/some-page|
18
s_hewitt

ベースページを開き、storeLocationを使用して現在の場所を変数に入れることもできます。

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

ボーナス:対応するSSLURLを計算する方法は次のとおりです

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

上記の解決策は、私の開発環境が非標準のポートにあるという問題を引き起こします。このソリューションは、httpsにも役立つ場合があります。本当にベースURLが必要な場合:

<tr>
<td>storeEval</td>
<td>Selenium.browserbot.baseUrl</td>
<td>baseurl</td>
</tr>
<tr>
<td>echo</td>
<td>${baseurl}</td>
<td></td>
</tr>
2
freak3dot

Selenium IDEを使用すると、これは$(Host)値を保存せずに実行できます。

Command: open
Target: */login
Value:

Selenium Coreで使用可能なこのスニペット文字列一致パターン [Source]

1
kirbycope
<tr>
<td>storeLocation</td>
<td>url</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${url}</td>
<td></td>
</tr>
0
some_other_guy

VerifyLocation Selenium IDEコマンド(検証するホスト名のみを提供し、実行時に広くランダムになる可能性のあるクエリ文字列の一部を含む)の使用に苦労した後、検証する方法(これまでのところ)最も柔軟な現在のURLとパスは、「verifyEval」コマンドを使用し、javascriptを使用してテストするURLの部分を解析することです。

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

Javascriptがサポートする任意のロケーションプロパティを配置して、それらをテストできます( https://Gist.github.com/jlong​​/2428561 を参照)...

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

または例:

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

または、お気軽に組み合わせてください

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

Seleniumドライバーを使用して、現在のUrlを文字列として取得し、オブジェクトをURLオブジェクトに変換できます。それが完了すると、Java URLクラスには、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;
}
0
djangofan