在TSA网站执行Selenium搜索脚本时遭遇ElementNotVisibleException求助
解决Selenium访问TSA-Algerie网站搜索时的ElementNotVisibleException问题
嘿,我看了你的脚本,这个ElementNotVisibleException问题其实挺常见的,咱们来一步步解决它:
问题根源分析
- 元素定位顺序错误:你先直接用
driver.find_element_by_name("s")去抓取元素,但这时候页面可能还没加载完成,或者搜索框本身处于隐藏状态,导致Selenium找不到可见的元素就报错了。 - 搜索框默认隐藏:观察TSA-Algerie的网站,搜索框默认是隐藏的,需要点击页面上的放大镜图标(搜索按钮)才会显示出来,直接定位输入框肯定会失败。
- 拼写小失误:你输入的关键词是
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
相关产品推荐
相关产品推荐

