Selenium没有正确处理我的javascript对话框

时间:2015-04-07 09:48:03

标签: python ajax selenium flask python-behave

过去5个小时我试图找到一个自昨天以来一直困扰着我的解决方案。我正在使用behave和selenium编写一些BDD测试来测试我的Web应用程序的产品添加功能。 因此,要添加产品,用户必须单击一个按钮,该按钮将启动一个包含该表单的对话框,以允许他填写他想要添加的产品的详细信息。当用户点击提交时,对话框消失,JS代码使用Ajax请求使用新产品更新datatables表。 当我启动我的测试时,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.")
        }
    });
}




所以我想要的是:selenium甚至能够运行Ajax请求吗?如果不是这样的话,我需要做什么才能让我的测试工作?

0 个答案:

没有答案