代码之家  ›  专栏  ›  技术社区  ›  Abdallah Faik

selenium查找元素不工作它找不到元素和发送键

  •  1
  • Abdallah Faik  · 技术社区  · 2 年前

    我用selenium做的每一步都出现了错误,我能用任何替代品立即解决这个错误吗
    这是代码

    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    options = Options()
    options.add_experimental_option("detach", True)
    d = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    d.get('https://elzero.org/')
    d.find_element(By.CLASS_NAME, "form").send_keys('python')
    

    Traceback (most recent call last):
      File "C:\Users\abdal\PycharmProjects\pythonProject\main.py", line 11, in <module>
        d.find_element(By.NAME, "form").send_keys('python')
      File "C:\Users\abdal\PycharmProjects\pythonProject\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 857, in find_element
        return self.execute(Command.FIND_ELEMENT, {
      File "C:\Users\abdal\PycharmProjects\pythonProject\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 435, in execute
        self.error_handler.check_response(response)
      File "C:\Users\abdal\PycharmProjects\pythonProject\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="form"]"}
      (Session info: chrome=103.0.5060.134)
    Stacktrace:
    Backtrace:
        Ordinal0 [0x011B5FD3+2187219]
        Ordinal0 [0x0114E6D1+1763025]
        Ordinal0 [0x01063E78+802424]
        Ordinal0 [0x01091C10+990224]
        Ordinal0 [0x01091EAB+990891]
        Ordinal0 [0x010BEC92+1174674]
        Ordinal0 [0x010ACBD4+1100756]
        Ordinal0 [0x010BCFC2+1167298]
        Ordinal0 [0x010AC9A6+1100198]
        Ordinal0 [0x01086F80+946048]
        Ordinal0 [0x01087E76+949878]
        GetHandleVerifier [0x014590C2+2721218]
        GetHandleVerifier [0x0144AAF0+2662384]
        GetHandleVerifier [0x0124137A+526458]
        GetHandleVerifier [0x01240416+522518]
        Ordinal0 [0x01154EAB+1789611]
        Ordinal0 [0x011597A8+1808296]
        Ordinal0 [0x01159895+1808533]
        Ordinal0 [0x011626C1+1844929]
        BaseThreadInitThunk [0x752AFA29+25]
        RtlGetAppContainerNamedObjectPath [0x77207A9E+286]
        RtlGetAppContainerNamedObjectPath [0x77207A6E+238]
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Himanshu Poddar    2 年前

    类中没有这样的元素 form

    这应该行得通

    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium import webdriver
    
    
    options = Options()
    
    options.add_experimental_option("detach", True)
    d = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    
    d.get('https://elzero.org/')
    d.find_element(By.ID, "search").send_keys('python')
    

    另外,您可以发送 ENTER 搜索令牌的键。

    d.find_element(By.ID, "search").send_keys(Keys.ENTER)