1

Seleniumを使用してWebアプリケーションのテストスクリプトを記録しています。

アプリケーションの一部のページには、データベース内のレコードのリストを表すテーブルが含まれています。テーブルの行に添付されたjqueryクリックハンドラーがあります。これは、ユーザーがテーブルの行をクリックしたときに関連するレコードを編集できるようにするページをロードします。

残念ながら、SeleniumIDEはテーブル行のクリックを記録しません。コードを確認しましたが、関連する関数は次のとおりです。

Recorder.prototype.findClickableElement = function(e) {
    if (!e.tagName) return null;
    var tagName = e.tagName.toLowerCase();
    var type = e.type;
    if (e.hasAttribute("onclick") || e.hasAttribute("href") || tagName == "button" ||
        (tagName == "input" && 
         (type == "submit" || type == "button" || type == "image" || type == "radio" || type == "checkbox" || type == "reset"))) {
        return e;
    } else {
        if (e.parentNode != null) {
            return this.findClickableElement(e.parentNode);
        } else {
            return null;
        }
    }
}

以下を追加して、これを変更しようとしました。

if($ && $._data) {
    var ev = $._data(e, "events");
    if(ev && ev.click)
        return e;
}

ただし、$ ._ dataはnullです!

同じWebページを開いた状態でFirebugの同じ変数を見ると、$ ._ dataが存在し、$ ._ data(e、 "events")。clickも存在します。

なぜFirebugにあるのかわかりませんが、Seleniumにはありません。Seleniumが異なるコンテキストで実行されている可能性があるため、2つの異なる「$」変数などがありますか?

4

0 に答える 0