python selenium中的NoSuchElementException

Posted

技术标签:

【中文标题】python selenium中的NoSuchElementException【英文标题】:NoSuchElementException in python selenium 【发布时间】: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。 【参考方案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

参考

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

Selenium “selenium.common.exceptions.NoSuchElementException” when using Chrome

【讨论】:

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 的讨论的链接。

以上是关于python selenium中的NoSuchElementException的主要内容,如果未能解决你的问题,请参考以下文章

selenium 获取table中的元素。python

无法从 AWS 机器上的 python 中的 selenium 调用 firefox

Selenium-python 中的弹窗处理

Python+Selenium中级篇之8-Python中的继承的使用

Selenium 中的 Instagram XPath 不起作用? (Python)

selenium python选取下拉框中的值