无法使用Selenium向文本框发送键。出现selenium.common.exceptions.TimeoutException: 消息:

0 投票
1 回答
34 浏览
提问于 2025-04-13 12:41

我正在尝试使用Selenium给搜索框输入内容,但遇到了错误:

Traceback (most recent call last):
  File ".\test.py", line 19, in <module>
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#typeahead-input-56352"))).send_keys("2216 NW 6 PL FORT LAUDERDALE")
  File "D:\Python Projects\Title Search\titlesearch\lib\site-packages\selenium\webdriver\support\wait.py", line 95, in 
until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Stacktrace:
        GetHandleVerifier [0x00007FF6D9C9AD02+56930]
        (No symbol) [0x00007FF6D9C0F602]
        (No symbol) [0x00007FF6D9AC42E5]
        (No symbol) [0x00007FF6D9B098ED]
        (No symbol) [0x00007FF6D9B09A2C]
        (No symbol) [0x00007FF6D9B4A967]
        (No symbol) [0x00007FF6D9B2BCDF]
        (No symbol) [0x00007FF6D9B481E2]
        (No symbol) [0x00007FF6D9B2BA43]
        (No symbol) [0x00007FF6D9AFD438]
        (No symbol) [0x00007FF6D9AFE4D1]
        GetHandleVerifier [0x00007FF6DA016F8D+3711213]
        GetHandleVerifier [0x00007FF6DA0704CD+4077101]
        GetHandleVerifier [0x00007FF6DA06865F+4044735]
        GetHandleVerifier [0x00007FF6D9D39736+706710]
        (No symbol) [0x00007FF6D9C1B8DF]
        (No symbol) [0x00007FF6D9C16AC4]
        (No symbol) [0x00007FF6D9C16C1C]
        (No symbol) [0x00007FF6D9C068D4]
        BaseThreadInitThunk [0x00007FFD02F37344+20]
        RtlUserThreadStart [0x00007FFD03F226B1+33]

这是我用来输入内容的代码:

# Import Dependencies
from bs4 import BeautifulSoup as bs
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import time

options = webdriver.ChromeOptions()
options.headless = True

driver = webdriver.Chrome()
driver.maximize_window()

driver.get("https://broward.county-taxes.com/public/search/property_tax")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@class="svg-icon"]'))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#typeahead-input-56352"))).send_keys("2216 NW 6 PL FORT LAUDERDALE")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="search-icon"]/svg'))).click()

在输入内容之前,我甚至还关闭了一个弹窗。我试过用 XPATHCSS_SELECTOR,但都出现了同样的错误。

请帮帮我。

1 个回答

1

问题的根本原因: ID 属性的值是动态的。所以,像 input#typeahead-input-56352 这样的写法是行不通的。每次页面加载时,数字(56352)都会变化。

解决方案: 你可以改用 XPath 定位策略,XPath 表达式可以写成: //input[@role='searchbox']

把下面这一行改成:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#typeahead-input-56352"))).send_keys("2216 NW 6 PL FORT LAUDERDALE")

改成:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@role='searchbox']"))).send_keys("2216 NW 6 PL FORT LAUDERDALE")

注意: 另外,在下面这一行,XPath 表达式 //*[@id="search-icon"]/svg 是不正确的,它没有找到任何元素。我已经在下面的有效代码中修正了它。

请查看下面重构后的有效代码:

driver = webdriver.Chrome()
driver.maximize_window()
wait = WebDriverWait(driver, 20)

driver.get("https://broward.county-taxes.com/public/search/property_tax")
wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@class="svg-icon"]'))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, '//input[@role="searchbox"]'))).send_keys("2216 NW 6 PL FORT LAUDERDALE")
wait.until(EC.element_to_be_clickable((By.XPATH, '//span[@id="search-icon"]'))).click()

撰写回答