【问题标题】:NoSuchElementException in python seleniumpython selenium中的NoSuchElementException
【发布时间】:2020-04-24 19:34:20
【问题描述】:

我正在尝试向输入框提供输入。我也尝试使用 find_by_d/name 和 xpath。但仍然得到

文件“C:\Users\1024983\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 978 行,在 find_element '价值':价值})['价值'] 执行中的文件“C:\Users\1024983\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 321 行 self.error_handler.check_response(响应) 文件“C:\Users\1024983\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py”,第 242 行,在 check_response 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{"method":"css selector","selector":"[name="combobox-1023-inputEl"]"}

使用名字

  your_input = driver.find_element_by_name("combobox-1023-inputEl")
  your_input.clear()
  your_input.send_keys("Coke")
  driver.find_element_by_name("combobox-1023-inputEl").send_keys(Keys.ENTER)
  time.sleep(2)

通过使用 id

driver.find_element(By.ID, "combobox-1023-inputEl").click()
driver.find_element(By.ID, "combobox-1023-inputEl").send_keys("Coke")

输入框

<input id="combobox-1023-inputEl" type="text" role="combobox" class="x-form-field x-form-required-field x-form-text" autocomplete="off" name="combobox-1023-inputEl" style="width: 100%;">

【问题讨论】:

  • 您可以发布您正在使用的网址吗?
  • 1023 的值是动态的吗?
  • 试试这个your_input = driver.find_element_by_css_selector(".x-form-field.x-form-required-field.x-form-text[id*='-inputEl'][name*='-inputEl']")
  • id 不是动态的,始终只有 1023 @KunduK
  • @DivyaMani :上面的css选择器有效吗?如果没有,则检查必须有 iframe。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

所需元素是动态元素,因此要在元素中发送 字符序列,您必须为 element_to_be_clickable() 诱导 WebDriverWait,您可以使用以下Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.x-form-field.x-form-required-field.x-form-text[id^='combobox'][name$='inputEl']"))).send_keys("Coke")
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='x-form-field x-form-required-field x-form-text' and starts-with(@id,'combobox')][contains(@name,'inputEl')]"))).send_keys("Coke")
    
  • 注意:您必须添加以下导入:

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

参考

您可以在以下位置找到详细的相关讨论:

【讨论】:

  • WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='x-form-field x-form-required-field x-form -text' 并开始于(@id,'combobox')][contains(@name,'inputEl')]"))).send_keys("CARA Operations LTD") 文件 "C:\Users\1024983\AppData \Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\support\wait.py",第 80 行,直到引发 TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: 消息: - 即使在页面加载完成后也能得到这个
  • @DivyaMani 查看更新的答案,我提供了有关如何解决 NoSuchElementException 的讨论的链接。
猜你喜欢
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2013-10-12
  • 2020-04-03
相关资源
最近更新 更多