【问题标题】:Selenium chrome driver unable to locate input elementSelenium chrome 驱动程序无法定位输入元素
【发布时间】:2022-02-12 03:00:14
【问题描述】:

尝试定位输入元素时出错。尝试通过 xpath 和 className 定位。

输入元素的 HTML:

<input data-v-9182d0dc="" type="text" id="filterElement" data-cy="v-search-input" autocomplete="off" placeholder="Type a name or a number" class="padding-right-30 round">

此元素的 Xpath:

//*[@id="filterElement"]

此元素的完整 Xpath:/html/body/div[2]/div[5]/div/div[2]/div/div[1]/div/div/div[2]/input

查找元素的语句

temp=driver.find_element_by_xpath('/html/body/div[2]/div[5]/div/div[2]/div/div[1]/div/div/div[2]/input')

收到以下错误消息:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[2]/div[5]/div/div[2]/div/div[1]/div/div/div[2]/input"}

更新:该元素似乎在 iframe 内。不确定选择元素时这是如何发挥作用的

【问题讨论】:

    标签: python selenium xpath css-selectors webdriverwait


    【解决方案1】:

    要定位 clickable 元素,您需要为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下locator strategies 之一:

    • 使用CSS_SELECTOR

      element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#filterElement[data-cy='v-search-input']")))
      
    • 使用XPATH

      element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='filterElement' and @data-cy='v-search-input']")))
      
    • 注意:您必须添加以下导入:

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

    参考文献

    您可以在NoSuchElementException 中找到一些相关讨论:

    【讨论】:

    • 我什至没有尝试点击输入元素。只是试图找到它。在尝试定位输入元素之前,我有 3 秒的睡眠时间。
    • @Chetan 我没有通过代码行调用click()
    【解决方案2】:

    我不得不切换 iframe。输入元素位于另一个 iframe 中。

    【讨论】:

    • 我确信answer参考部分的第一个链接一定对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    相关资源
    最近更新 更多