如何在Python中使用Selenium WebDriver重置表单并提交表单

0 投票
1 回答
3225 浏览
提问于 2025-04-18 08:56

我正在用Selenium测试一个注册表单。在表单页面加载后,我使用jQuery重置了表单字段,代码是 $('input[input!='submit']', 'select').val(''),然后通过Selenium填写了所有必填字段。最后,当我点击提交按钮时,什么也没有发生!注意:我可以看到Selenium的点击事件已经触发(因为按钮被高亮显示),但页面没有加载出结果页面。

如果我在普通浏览器中手动使用相同的jQuery,然后点击提交按钮,这样是可以正常工作的。而且,我查看了提交按钮的HTML内容,发现它在执行jQuery后没有变化。

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

1 个回答

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(''),这个空值必须是下拉框选项之一。

    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()
    

撰写回答