0

昨日から私を悩ませてきた解決策を見つけようとして、過去 5 時間を過ごしました。Web アプリの製品追加機能をテストするために、behavior と selenium を使用していくつかの BDD テストを作成しています。したがって、製品を追加するには、ユーザーが追加したい製品の詳細を入力できるフォームを含むダイアログ ボックスを起動するボタンをクリックする必要があります。ユーザーが [送信] をクリックすると、ダイアログ ボックスが消え、JS コードがAjax 要求を使用して新しい製品でデータ テーブル テーブルを更新します。テスト selenium を起動すると、製品追加フォームが見つかり、提供した詳細が入力されます。問題は、送信をクリックしても基本的に何も起こらず、JS コードが実行されないことです。フォームを送信する動作コードは次のとおりです。

@when(u'I click on Add new product')
def subscribe_click(context):
    context.browser.find_element_by_id('add-submit').click()

以下は、フォームの送信を実際に処理する JS 関数です。

function submitEditForm(form, upload_data)
{
    data_serialized = $(form).serializeArray();

    data = {
        'csrf_token': data_serialized[0].value,
        'name': data_serialized[1].value,
        'description': data_serialized[2].value,
        'price': data_serialized[3].value,
        'image': upload_data.data ? upload_data.data.image : ""
    };

    $.ajax({
        type: "PUT",
        url: "/api/products/"+row_data[0],
        data: data,
        dataType: "json",
        success: function(data) {
            $("#edit-frm").fadeToggle("fast");
            new_data = [
                data['name'],
                data['description'],
                data['price'],
                data['image']
            ]
            $('#myTable').dataTable().fnUpdate(data.data, row_index, undefined, 1);
        },
        error: function (resp) {
            $("#edit-frm").fadeToggle("fast");
            alertify.alert("There was a problem with your request please try again.")
        }
    });
}

だから私がしたいのは、セレンはAjaxリクエストを実行することさえできますか? そうでない場合、テストが機能するために何をする必要がありますか??

4

0 に答える 0