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

Selenium无法识别LinkedIn对应class,调用find_elements_by_class_name返回空列表

问题原因
  1. find_elements_by_class_name 方法本身不支持多类名匹配,你传入的disabled ember-view job-card-container__link job-card-list__title是4个独立的类名,该方法会将整段字符串识别为单个类名去DOM中检索,自然无法匹配到对应元素,返回空列表。
  2. LinkedIn招聘内容为动态懒加载渲染,页面初始化完成时招聘卡片还未加载到DOM树中,提前执行查询操作就会获取不到元素。
  3. 部分场景下可能存在的额外问题:未登录LinkedIn账号时平台不会返回完整的招聘DOM结构、目标元素嵌套在iframe中未切换上下文就执行查询。
解决方案
  • 优先使用CSS选择器或XPath做元素定位,避免使用find_elements_by_class_name做多类匹配,同时建议过滤掉不稳定的动态类(ember-view为Ember框架自动生成的动态类,disabled为状态类,都不适合作为定位依据),示例定位写法:
    # Selenium 4.+ 推荐使用By类统一管理定位方式
    from selenium.webdriver.common.by import By
    job_elements = driver.find_elements(By.CSS_SELECTOR, '.job-card-container__link.job-card-list__title')
    
  • 增加显式等待逻辑,等目标元素加载完成后再执行采集操作,避免因页面未渲染完成返回空结果,示例代码:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 最长等待10秒,直到目标元素全部加载到DOM中
    wait = WebDriverWait(driver, 10)
    job_elements = wait.until(EC.presence_of_all_elements_located(
        (By.CSS_SELECTOR, '.job-card-container__link.job-card-list__title')
    ))
    
  • 执行采集前先模拟登录LinkedIn账号,确保平台返回完整的招聘页面DOM结构。
  • 若排查发现目标元素嵌套在iframe标签内,需要先切换iframe上下文再执行元素查询:driver.switch_to.frame(定位到的iframe元素)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:48:02