使用Python 3.10+Selenium无法触发回车/提交操作求助
Python 3.10 结合 Selenium 回车/提交表单无响应问题
我用Python 3.10搭配Selenium时,遇到了回车或提交表单完全没反应的问题,实在搞不懂原因。
我的代码如下:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pandas as pd driver = webdriver.Chrome() driver.maximize_window() driver.get('https://tjekditnet.dk/') time.sleep(2) driver.find_element(By.XPATH, "/html/body/div[38]/div/div/div[3]/div[2]/button[2]").click() time.sleep(1) Search = driver.find_element(By.XPATH, "/html/body/div[2]/div/main/div/div[1]/div[2]/div/div/fieldset/input") Search.clear() Search.send_keys("Nørrebrogade 1 2200") # 此处尝试回车/提交操作 time.sleep(3)
我是新手,欢迎各位指出问题,提前感谢!
我已经试过以下几种方法:
Search.submit()→ 报错:To submit an element, it must be nested inside a form element(要提交元素,该元素必须嵌套在form标签内)Search.send_keys(Keys.RETURN)→ 无任何反应,也没有错误代码Search.send_keys(Keys.ENTER)→ 无任何反应,也没有错误代码
解决思路
先激活输入框再发送回车
有时候输入框虽然被定位到,但焦点没在上面,先点击激活再操作:Search.click() Search.send_keys(Keys.ENTER)直接点击搜索按钮
别纠结回车,找到页面上的搜索按钮直接点击更靠谱,注意用稳定的定位方式(别用绝对XPATH):# 示例,需根据页面实际结构调整定位 search_btn = driver.find_element(By.CSS_SELECTOR, "fieldset button") search_btn.click()替换time.sleep为显式等待
固定等待容易因页面加载慢导致操作失效,改用显式等待确保元素可交互后再执行:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待输入框可点击 Search = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//fieldset/input[@type='text']")) ) Search.clear() Search.send_keys("Nørrebrogade 1 2200") Search.send_keys(Keys.ENTER)换掉不稳定的绝对XPATH
你用的绝对路径(比如/html/body/div[38]/...)极易失效,改用相对定位,比如同意按钮可以这样找:# 按按钮文本定位(假设按钮文本是"Accepter",实际看页面显示) accept_btn = driver.find_element(By.XPATH, "//button[contains(text(), 'Accepter')]") accept_btn.click()
内容的提问来源于stack exchange,提问作者Botlund
相关产品推荐
相关产品推荐

