Selenium Python:如何点击<input>标签类型的提交按钮
表单提交按钮无响应的解决方法
先修正你的JavaScript代码错误
你当前用的document.querySelectorAll('//input[@type='submit']')有两个明显问题:
querySelectorAll只支持CSS选择器,不兼容XPath语法;querySelectorAll返回的是元素集合,不能直接调用.click(),需要遍历或定位单个元素再执行点击。
修正后的代码示例
1. 定位单个提交按钮(推荐,若页面仅一个提交按钮)
self.dataBrowser.execute_script("document.querySelector('input[type=\"submit\"]').click();")
或者用更精准的选择器(结合class缩小范围):
self.dataBrowser.execute_script("document.querySelector('input.btn.btn-info[type=\"submit\"]').click();")
2. 批量处理多个提交按钮
self.dataBrowser.execute_script("document.querySelectorAll('input[type=\"submit\"]').forEach(btn => btn.click());")
其他可能的解决方向
- 检查表单验证:如果表单有必填项未填写、格式不符合要求,前端验证会阻止提交,先确保所有字段都符合规则;
- 直接触发表单提交事件:如果按钮的点击事件绑定存在问题,可以绕过按钮直接提交表单:
self.dataBrowser.execute_script("document.querySelector('form').submit();")
- 等待元素加载完成:如果元素还未渲染完成就执行点击,会无响应,用Selenium的显式等待确保元素可点击:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待10秒,直到按钮可点击 submit_btn = WebDriverWait(self.dataBrowser, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='submit']")) ) submit_btn.click()
- 移除禁用属性:如果按钮被添加了
disabled属性,先移除再点击:
self.dataBrowser.execute_script("document.querySelector('input[type=\"submit\"]').removeAttribute('disabled');") self.dataBrowser.execute_script("document.querySelector('input[type=\"submit\"]').click();")
内容的提问来源于stack exchange,提问作者Omar Yacop
相关产品推荐
相关产品推荐

