如何在python中使用selenium webdriver重置表单并提交表单

时间:2014-06-06 22:27:31

标签: javascript python selenium selenium-webdriver

我有一个注册表单,我正在使用Selenium进行测试。在使用jQuery加载表单页面之后,我使用$('input[input!='submit']', 'select').val('')重置表单字段,然后通过selenium输入所有必填字段。最后,当输入所有必填字段并单击提交按钮时,没有任何反应!注意:我可以看到selenium click事件已触发(当按钮突出显示时),但页面未加载结果页面。

如果我使用相同的jQuery在普通浏览器上手动尝试,然后单击提交按钮,它可以正常工作。此外,我回顾了提交按钮的HTML内容,并在jQuery执行后保持不变。

<input type="submit" value="doThat" name="submit">

1 个答案:

答案 0 :(得分:0)

  1. 你有一些错别字。

    (1)输入元素的属性为type,而不是input

    <input type='submit'>  
    bad: $('input[type=input]')
    good: $('input[type=submit]')
    

    (2)必须传递给jQuery一个字符串,而不是几个字符串:

    bad:  jQuery('input', 'select')
    good: jQuery('input, select')
    

    (3)要将空值.val('')分配给select,空值必须是其中一个选项。

    bad:  SELECT options: ['a', 'b'] 
    good: SELECT options: ['', 'a', 'b']
    

    我正在使用python,所以这样做是正确的(使用 execute_script 使用 jQuery 而不是 $ 来防止错误):

    driver.execute_script(
        "jQuery('input[type!=submit], select').val('');"
    )
    
  2. 提交表单有两种方法:

    (1)自己,搜索提交输入和.submit()它:

    driver.find_element_by_css_selector('input[type=submit]').submit()
    

    (2)或让selenium为你搜索提交(在某些HTML中) 结构失败):

    any_form_element = driver.find_element_by_css_selector('select')
    any_form_element.submit()