如何在Python中使用Selenium WebDriver重置表单并提交表单
我正在用Selenium测试一个注册表单。在表单页面加载后,我使用jQuery重置了表单字段,代码是 $('input[input!='submit']', 'select').val('')
,然后通过Selenium填写了所有必填字段。最后,当我点击提交按钮时,什么也没有发生!注意:我可以看到Selenium的点击事件已经触发(因为按钮被高亮显示),但页面没有加载出结果页面。
如果我在普通浏览器中手动使用相同的jQuery,然后点击提交按钮,这样是可以正常工作的。而且,我查看了提交按钮的HTML内容,发现它在执行jQuery后没有变化。
<input type="submit" value="doThat" name="submit">
1 个回答
0
你有一些拼写错误。
(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('');" )
提交表单有两种方法:
(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()