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

在TSA网站执行Selenium搜索脚本时遭遇ElementNotVisibleException求助

解决Selenium访问TSA-Algerie网站搜索时的ElementNotVisibleException问题

嘿,我看了你的脚本,这个ElementNotVisibleException问题其实挺常见的,咱们来一步步解决它:

问题根源分析

  1. 元素定位顺序错误:你先直接用driver.find_element_by_name("s")去抓取元素,但这时候页面可能还没加载完成,或者搜索框本身处于隐藏状态,导致Selenium找不到可见的元素就报错了。
  2. 搜索框默认隐藏:观察TSA-Algerie的网站,搜索框默认是隐藏的,需要点击页面上的放大镜图标(搜索按钮)才会显示出来,直接定位输入框肯定会失败。
  3. 拼写小失误:你输入的关键词是Algieria,正确拼写应该是Algeria,这个小错误可能会导致后续断言出问题。

修正后的完整代码

import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.tsa-algerie.com")
wait = WebDriverWait(driver, 8)

# 先等待搜索放大镜图标可点击,点击它触发搜索框显示
search_icon = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "i.fa-search")))
search_icon.click()

# 等待搜索输入框可见后再定位
search_box = wait.until(EC.visibility_of_element_located((By.NAME, "s")))
search_box.send_keys("Algeria")
search_box.send_keys(Keys.RETURN)

assert "No results found." not in driver.page_source
driver.close()
os.system('pause')

关键改进点

  • 调整等待逻辑:先等待交互元素(搜索图标)可点击,触发搜索框显示后,再等待输入框可见,确保Selenium操作的是真实可见的元素。
  • 精确元素定位:用CSS_SELECTOR定位搜索图标,比模糊定位更可靠;如果后续还是有问题,也可以换成XPATH定位,比如//i[@class='fa fa-search']。
  • 修正关键词拼写:避免因为拼写错误导致无搜索结果的断言失败。

如果运行后还是有问题,可以检查ChromeDriver的版本是否和你的Chrome浏览器版本匹配,这也是Selenium常见的坑哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:49:28