You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium操作careerjunction搜索栏时出现element not interactable错误求解决

问题

我是Selenium新手,尝试操作网站https://www.careerjunction.co.za的搜索栏,让程序用户搜索职位并爬取相关信息。目前我的代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

link = 'https://www.careerjunction.co.za'
path = r"C:\Users\--myName\Downloads\chromedriver-win64\chromedriver-win64\chromedriver.exe"
service = Service(executable_path=path)
driver = webdriver.Chrome(service = service)

driver.get(link)
time.sleep(2)

u_search = input("Please enter the job you are looking for: ")
search = driver.find_element(By.NAME, "keywords")
search.send_keys(u_search)
search.send_keys(Keys.RETURN)

我遇到了element not interactable错误,推测出现在搜索栏元素上。我已尝试以下方法:

search = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.NAME, "keywords"))

以及:

driver.execute_script("arguments[0].scrollIntoView(true);", search)

使用的Chrome版本为137.0.7151.69,ChromeDriver版本为137.0.7151.68,但均未解决问题。请问问题可能出在哪里?

可能的问题原因及解决办法

  • 存在多个同名元素,定位到了不可交互的对象
    页面中可能有多个name="keywords"的元素,比如隐藏的备用搜索框、iframe内的元素等。打开浏览器开发者工具(F12)搜索该属性,查看匹配结果,改用更精确的定位方式,比如结合父容器的XPath:

    search = driver.find_element(By.XPATH, '//div[contains(@class, "search-header")]//input[@name="keywords"]')
    
  • 弹窗/遮罩层遮挡了搜索栏
    网站加载后可能弹出Cookie授权、广告等弹窗,这些元素会覆盖搜索栏导致无法交互。先处理这类弹窗:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver.get(link)
    driver.maximize_window()
    # 关闭Cookie授权弹窗(根据实际元素调整选择器)
    try:
        accept_btn = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='Accept all cookies']")))
        accept_btn.click()
    except:
        pass
    
  • WebDriverWait用法不完整
    你之前的等待代码缺少必要的导入和完整逻辑,正确写法需要先导入相关模块,等待元素可见后再激活输入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 等待元素可见并可交互
    search = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.NAME, "keywords"))
    )
    # 先点击激活搜索框,再输入内容
    search.click()
    search.send_keys(u_search)
    search.send_keys(Keys.RETURN)
    
  • 浏览器窗口尺寸过小导致布局异常
    如果浏览器窗口处于缩小状态,搜索栏可能被折叠到移动端菜单中,导致元素不可交互。添加窗口最大化代码:

    driver.get(link)
    driver.maximize_window()  # 确保窗口最大化
    

内容的提问来源于stack exchange,提问作者no-one

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:50:17