Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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 Webdriver Selenium.common.exceptions.NoSuchElementException:消息:无此类元素:无法定位元素_Python_Selenium_Selenium Webdriver - Fatal编程技术网

Python Selenium Webdriver Selenium.common.exceptions.NoSuchElementException:消息:无此类元素:无法定位元素

Python Selenium Webdriver Selenium.common.exceptions.NoSuchElementException:消息:无此类元素:无法定位元素,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我知道我的问题很普遍。然而,尽管我在Google和SO上进行了大量搜索,但由于上面的错误消息“无法定位元素”,我无法找到任何东西来帮助我解决Python Selenium的问题。我访问的几乎所有线程都是关于交换帧的。我在我的网站上找不到任何类型的框架标签 问题是我试图选择一个输入字段,以便发送_键,但selenium无法找到该元素。元素具有以下XPath: '//*[@id="app-root"]/div/div[2]/div/div[1]/div[2]/div[2]/div

我知道我的问题很普遍。然而,尽管我在Google和SO上进行了大量搜索,但由于上面的错误消息“无法定位元素”,我无法找到任何东西来帮助我解决Python Selenium的问题。我访问的几乎所有线程都是关于交换帧的。我在我的网站上找不到任何类型的框架标签

问题是我试图选择一个输入字段,以便发送_键,但selenium无法找到该元素。元素具有以下XPath:

'//*[@id="app-root"]/div/div[2]/div/div[1]/div[2]/div[2]/div[1]/div[2]/div/input'
以下是我拥有的代码:

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

driver = webdriver.Chrome('./chromedriver')  # Optional argument, if not specified will search path.
driver.get(site_url);

time.sleep(5)
delivery_number = driver.find_element_by_xpath('//*[@id="app-root"]/div/div[2]/div/div[1]/div[2]/div[2]/div[1]/div[2]/div/input')

driver.quit()
我无法选择带有上述引号的元素。xpath不太可能有错误,因为它是从chrome开发工具复制的

我尝试在find_元素行之前使用此命令,但也没有效果:

element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="app-root"]/div/div[2]/div/div[1]/div[2]/div[2]/div[1]/div[2]/div/input')))
我对使用截图表示歉意,因为页面源不能准确地表示页面,但请参阅下面元素的截图

这是页面源,如果有帮助:

<!DOCTYPE html>
<html>
<head lang="zh-cn">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Nestia F&B</title>
    <meta name="renderer" content="webkit">
    <!-- No Baidu Siteapp-->
    <meta http-equiv="Cache-Control" content="no-siteapp"/>
    <meta name="apple-mobile-web-app-title" content=""/>
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="stylesheet" href="/static/css/ui/amazeui.min.css"/>
    <link rel="stylesheet" href="/static/css/app.css"/>
    <link rel="stylesheet" href="/static/css/patch.css"/>
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
    <link rel="stylesheet" href="/static/css/videoplayer.css">
    <link rel="stylesheet" href="/static/css/movies.css">
</head>
<body>
<div id="app-root">
    <div style="width:100%;text-align: center">
        <img src="static/img/loading.gif"/>
    </div>
</div>

<script src="/static/scripts/app.bundle.20200907180756.js"></script>
</body>
</html>

雀巢餐饮

谢谢你一直读到这里。我们将非常感谢您的帮助。:)

使用
WebDriverWait
()和
元素可点击
(),并使用
xpath
css选择器之一

XPATH

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//div[@class="am-form-group item-input"]/input')))
CSS选择器

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.item-input>input')))

使用
WebDriverWait
()和
元素可单击
(),并使用
xpath
css选择器

XPATH

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//div[@class="am-form-group item-input"]/input')))
CSS选择器

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.item-input>input')))

嗨,昆都克,谢谢你的回答。编程不再显示找不到元素的错误。但是,我有一个问题,那就是我尝试发送密钥,但没有发送任何内容。这块地还是空的。下面是我的代码:delivery_number=WebDriverWait(driver,20)。直到(EC.element_to_be_可点击((By.XPATH,//div[@class=“am form group item input”]/input'))deliveryyy_编号。发送密钥(“Hello”)时间。sleep(5)driver.quit()程序在运行最后一行后结束。没有错误消息,它只是结束。嗨@KunduK,谢谢你分享答案。程序现在似乎能够选择该项目。但send_键似乎没有像我发送_键时那样工作,没有向该元素发送任何内容。你知道吗?并没有错误消息,程序似乎只是跳过了这一行代码。您需要共享您的url以便进一步调查?嗨@KunduK,谢谢您的回答。编程不再显示找不到元素的错误。但是,我有一个问题,那就是我尝试发送密钥,但没有发送任何内容。这块地还是空的。下面是我的代码:delivery_number=WebDriverWait(driver,20)。直到(EC.element_to_be_可点击((By.XPATH,//div[@class=“am form group item input”]/input'))deliveryyy_编号。发送密钥(“Hello”)时间。sleep(5)driver.quit()程序在运行最后一行后结束。没有错误消息,它只是结束。嗨@KunduK,谢谢你分享答案。程序现在似乎能够选择该项目。但send_键似乎没有像我发送_键时那样工作,没有向该元素发送任何内容。你知道吗?并没有错误消息,程序似乎只是跳过了这行代码。你们需要共享你们的url以便进一步调查吗?