使用Selenium点击input类型submit按钮失败,求解决方法
解决Selenium点击Submit按钮的问题
错误原因分析
你之前的代码存在以下问题:
- Selenium 4+版本已弃用
driver.find_element("class", "...")这类直接传字符串的定位方式,必须通过By类指定定位策略。 By.CLASS_NAME仅支持单个类名,传入多个类名会被解析为错误的CSS选择器(.btn btn-lg...不符合CSS语法,多类名正确写法是用.连接)。- 不存在
"value"这种定位方式,需通过XPATH或CSS选择器定位元素的value属性。
正确实现方式
方法1:通过XPATH定位value属性
这是最精准的方式,利用按钮唯一的value值定位:
from selenium.webdriver.common.by import By driver.find_element(By.XPATH, "//input[@value='Log In']").click()
方法2:通过CSS选择器定位多类名
注意CSS选择器中多个类名需用.连接,不能有空格:
from selenium.webdriver.common.by import By driver.find_element(By.CSS_SELECTOR, "input.btn.btn-lg.btn-primary.btn-block").click()
方法3:显式等待元素可点击(推荐)
若页面加载较慢,元素未渲染完成就执行点击会报错,可通过显式等待确保元素可交互后再操作:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//input[@value='Log In']")) ).click()
内容的提问来源于stack exchange,提问作者Runner Bean
相关产品推荐
相关产品推荐

