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

使用Selenium操作pracuj.pl输入框无法输入文本问题求助

问题

我开发了一个抓取招聘信息的爬虫,用Selenium操作pracuj.pl网站时遇到两个问题:

  1. input_key_words函数里,输入框明明已经获取焦点,但send_keys()完全无法填入文本;
  2. 控制台持续抛出SSL握手错误。

附上我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selections import *


class Pracuj_PL_Extractor():
    def __init__(self, *, key_words = None, location = None, distance = None, specialty = NOT_SPECIFIED, tech = NOT_SPECIFIED, level = NOT_SPECIFIED, Working_Hours = NOT_SPECIFIED, operation_mode = NOT_SPECIFIED):        
        options = webdriver.ChromeOptions()
        options.add_argument('--enable-logging')
        
        self.driver = webdriver.Chrome(options = options)
        self.driver.get(r'https://pracuj.pl')
        # 处理cookie弹窗
        try:
            cookie_button = WebDriverWait(self.driver, 10).until(
                EC.presence_of_element_located((By.CLASS_NAME, 'size-medium.variant-primary.cookies_b1fqykql'))
                )
            cookie_button.click()
            print("Cookies按钮已点击!")
        except:
            print("未检测到Cookies按钮")
        
        # 切换到IT板块
        it_button = self.driver.find_element(By.CSS_SELECTOR, '[data-test="tab-item-it"]')
        it_button.click()

        self.input_key_words("")

        self.driver.quit()
        self.driver = None

    def input_key_words(self, key_words):
        key_words_div = self.driver.find_element(By.CSS_SELECTOR, 'div[data-test="dropdown-element-kw"]')
        input_box = WebDriverWait(key_words_div, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, 'input[data-test="input-field"]'))
        )
        input_box.click()
        input_box.send_keys('1')

if __name__ == '__main__':
    extractor = Pracuj_PL_Extractor()

错误日志:

DevTools listening on ws://127.0.0.1:20490/devtools/browser/5518bf87-95dc-4478-b02a-934f5d2e1277
Cookies button detected and clicked!
[16536:22760:0930/213802.131:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -101

解决方案

1. 修复输入框无法输入的问题

等待元素可交互而非仅存在

当前用presence_of_element_located只保证元素在DOM中存在,但不一定能交互。换成element_to_be_clickable,确保元素加载完成且可操作:

def input_key_words(self, key_words):
    # 先等待输入框容器可点击,再展开
    key_words_div = WebDriverWait(self.driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, 'div[data-test="dropdown-element-kw"]'))
    )
    key_words_div.click()
    # 等待输入框可交互
    input_box = WebDriverWait(self.driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, 'input[data-test="input-field"]'))
    )
    input_box.clear()  # 先清空可能的默认值
    input_box.send_keys(key_words)

用JavaScript强制赋值(备选方案)

如果send_keys依然失效,直接通过JS给输入框赋值,绕开Selenium的输入模拟:

def input_key_words(self, key_words):
    key_words_div = WebDriverWait(self.driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, 'div[data-test="dropdown-element-kw"]'))
    )
    key_words_div.click()
    input_box = WebDriverWait(self.driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'input[data-test="input-field"]'))
    )
    # 用JS注入值
    self.driver.execute_script("arguments[0].value = arguments[1];", input_box, key_words)

切换IT板块后等待页面稳定

切换IT标签后页面可能会重新渲染,直接操作输入框会导致元素状态异常。加个等待确保页面加载完成:

# 切换到IT板块后
it_button = self.driver.find_element(By.CSS_SELECTOR, '[data-test="tab-item-it"]')
it_button.click()
# 等待页面更新,比如等待原按钮失效,或者IT板块特有的元素出现
WebDriverWait(self.driver, 10).until(
    EC.staleness_of(it_button)
)
# 再调用输入函数
self.input_key_words("你的关键词")

2. 解决SSL握手错误

这个错误大概率是ChromeDriver与Chrome版本不匹配,或者网络环境导致的:

  • 检查版本匹配:确保ChromeDriver的版本和你本地Chrome浏览器版本完全一致,下载对应版本的驱动;
  • 添加SSL忽略参数:在ChromeOptions里加入以下参数,跳过证书验证:
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')

内容的提问来源于stack exchange,提问作者s3r10us3r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:46:03