我已经过去 5 个小时试图找到从昨天开始一直困扰我的解决方案。我正在使用行为和硒编写一些 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.")
}
});
}
所以我想要的是:selenium 甚至能够运行 Ajax 请求吗?如果不是这种情况,我需要做什么才能使我的测试有效?