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的主要内容,如果未能解决你的问题,请参考以下文章
无法从 AWS 机器上的 python 中的 selenium 调用 firefox
Python+Selenium中级篇之8-Python中的继承的使用