【问题标题】:jQuery.forms.js works using click() but not submit() (using selenium)jQuery.forms.js 使用 click() 而不是 submit() 工作(使用 selenium)
【发布时间】:2009-12-19 00:15:16
【问题描述】:

我的表单有一个由 jquery.forms.js 提供的 ajax 处理程序。

form.ajaxForm({
  dataType: 'json',
  clearForm: true,
  success: function (data)
  {
     form.replaceWith(data);
  }
});

我正在使用 selenium(python RC 接口)对此进行测试,当我单击()按钮时它可以工作,但在我提交表单时却不行:

    locbase = "dom=document.forms[0]"
    SEL.type(locbase + ".elements[0]", text)
    SEL.select(locbase+".elements[2]", "label=%s" % username)
    SEL.submit(locbase) # DOESNT WORK
    SEL.click(locbase+".elements[3]") # WORK!

“不起作用”是指表单提交,但不是通过 AJAX。

我猜这是表单的问题。我如何才能(手动)知道我的 ajax 都必须同时提交表单和单击按钮,我必须做些什么才能使其工作?

【问题讨论】:

    标签: jquery html forms selenium


    【解决方案1】:

    我使用FireQuery plugin for firefox 来查看jQuery 绑定到一个元素。当页面上有提交表单的按钮时,我倾向于使用 click()。您很少会看到没有按钮的表单,如果没有,您可以随时调用 typeKeys()。

    从评论编辑:

    除了单击或 keyPress 之外,我认为他们不会提交,因为通常提交绑定到按钮,例如 jQuery 绑定到按钮,或者有一个用于键盘交互的侦听器。如果页面上没有绑定点,用户无法提交()某些内容

    【讨论】:

    • 那么这是否意味着 submit() 不起作用不是问题?按 Enter 或其他什么?
    • 如果提交按钮绑定到您的 jQuery 表单,那么单击它就可以了,或者您可以执行 keyPress("\13")。我不知道提交是否不起作用,但在使用 Selenium 的 2 年多时间里,我从来不需要在表单上使用 submit()
    • 我的意思是,用户是否有可能“提交”表单而不是“点击”它?
    • 除了单击或 keyPress 之外,我认为他们不会提交,因为通常提交绑定到按钮,例如 <input type=submit value=submit /> 或 jQuery 绑定到按钮或有监听器用于键盘交互。如果页面上没有绑定点,用户无法提交()某些内容。
    • 太好了,谢谢。如果您可以修改您的答案,说如果不做一些特别的事情就不能在没有 click() 的情况下进行 submit(),我会将其标记为正确。
    【解决方案2】:

    当您说“它不起作用”时,您是指表单不提交还是提交但不是通过 ajax 提交?

    简单的测试怎么样

    form=ajaxForm{(
     //options
    });
    
    form.submit();//does this work?
    

    【讨论】:

    • 我的意思是它提交,但不是通过 ajax。
    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 2013-01-03
    • 2023-01-19
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 2017-06-14
    • 2023-03-26
    相关资源
    最近更新 更多