Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python selenium中的NoSuchElementException_Python_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

python selenium中的NoSuchElementException

python selenium中的NoSuchElementException,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我正在尝试向inputbox提供输入。我也尝试过使用find\u by\u d/name和xpath。但是仍然得到 文件“C:\Users\1024983\AppData\Local\Programs\Python\37\lib\site packages\selenium\webdriver\remote\webdriver.py”,第978行,在find\u元素中 'value':value})['value'] 文件“C:\Users\1024983\AppData\Local\Progr

我正在尝试向inputbox提供输入。我也尝试过使用find\u by\u d/name和xpath。但是仍然得到

文件“C:\Users\1024983\AppData\Local\Programs\Python\37\lib\site packages\selenium\webdriver\remote\webdriver.py”,第978行,在find\u元素中 'value':value})['value'] 文件“C:\Users\1024983\AppData\Local\Programs\Python\37\lib\site packages\selenium\webdriver\remote\webdriver.py”,执行中第321行 self.error\u handler.check\u响应(响应) 文件“C:\Users\1024983\AppData\Local\Programs\Python\37\lib\site packages\selenium\webdriver\remote\errorhandler.py”,第242行,在check\u响应中 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“css选择器”,“选择器”:“[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%;">

所需元素是一个动态元素,因此要发送元素中的字符序列,您必须诱导WebDriverWait使
元素成为可点击的()
,并且您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    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
    

参考文献 您可以在以下内容中找到详细的相关讨论:


你能发布你正在使用的url吗?值
1023
是动态的吗?试试这个
你的\u input=driver。通过\u css\u选择器(“.x-form-field.x-form-required-field.x-form-text[id*='-inputEl'][name*='-inputEl'])查找\u元素\u
id不是动态的,总是1023@KunduK@DivyaMani:以上css选择器是否有效?如果没有,则检查必须有一个iframe.WebDriverWait(driver,20)。直到(EC.element_to_be_可点击((By.XPATH,“//input[@class='x-form-field x-form-required-field x-form-text'并以(@id,'combobox')][包含(@name,'inputEl')]))开头)。发送密钥(“卡拉运营有限公司”)文件“C:\Users\1024983\AppData\Local\Programs\Python\37\lib\site packages\selenium\webdriver\support\wait.py”,第80行,直到引发TimeoutException(消息、屏幕、堆栈跟踪)selenium.common.exceptions.TimeoutException:Message:-即使在页面加载失败后仍会获取此消息completed@DivyaMani在查看更新的答案时,我提供了关于如何解决NoTouchElementException的讨论的链接。