selenium.common.exceptions.NoSuchElementException 使用 Selenium 和 Python 将文本发送到输入字段时出错
selenium.common.exceptions.NoSuchElementException error sending text to input fields using Selenium and Python
我正在尝试编写一个简单的程序来填写要提交的表格(包括订单 ID 和邮政编码),但我不断收到以下错误:
selenium.common.exceptions.NoSuchElementException: Message: " (without any text following "Message
代码试验:
from selenium import webdriver
browser = webdriver.Safari()
browser.get('https://knowledge.tonal.com/s/order-status')
orderElm = browser.find_element_by_id('input-3')
orderElm.send_keys('1000XXX')
zipcodeElm = browser.find_element_by_id('input-4')
zipcodeElm.send_keys('90210')
zipcodeElm.submit()
我已经仔细检查了我的元素 ID 好几次,虽然我对此很陌生,但我相当有信心我拥有正确的元素 ID。我做错了什么?
这里有多个问题:
A. 得到 url 后,您没有等待页面中的元素完全加载,因此找不到元素
B. 你的定位器对我来说似乎是动态的,例如:input-3
,我认为它是 input-5
(虽然我在 Chrome 浏览器上,但这可能不排除定位器是动态的)。因此,我重构并寻找了一些我粘贴在下面的静态定位器策略。
C. zipcodeElm.submit()
不起作用,因为它不是按钮元素。我也重构了这个。
所以,这是代码。
driver.get('https://knowledge.tonal.com/s/order-status')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "(//div[@data-aura-class='cOrderSearch']//input)[1]")))
orderElm = driver.find_element(By.XPATH, "(//div[@data-aura-class='cOrderSearch']//input)[1]")
orderElm.send_keys('1000XXX')
zipcodeElm = driver.find_element(By.XPATH, "(//div[@data-aura-class='cOrderSearch']//input)[2]")
zipcodeElm.send_keys('90210')
driver.find_element(By.XPATH, "//*[@data-aura-class='cOrderSearch']//parent::div//button").click()
输出:(退出代码 0 表示代码无错通过)
Process finished with exit code 0
发送一个字符序列到你需要归纳的元素WebDriverWait for the and you can use either of the following :
使用XPATH
:
driver.get("https://knowledge.tonal.com/s/order-status")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@data-aura-class='cOrderSearch']//following::input[1]"))).send_keys('1000XXX')
driver.find_element(By.XPATH, "//div[@data-aura-class='cOrderSearch']//following::input[2]").send_keys("90210")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
我正在尝试编写一个简单的程序来填写要提交的表格(包括订单 ID 和邮政编码),但我不断收到以下错误:
selenium.common.exceptions.NoSuchElementException: Message: " (without any text following "Message
代码试验:
from selenium import webdriver
browser = webdriver.Safari()
browser.get('https://knowledge.tonal.com/s/order-status')
orderElm = browser.find_element_by_id('input-3')
orderElm.send_keys('1000XXX')
zipcodeElm = browser.find_element_by_id('input-4')
zipcodeElm.send_keys('90210')
zipcodeElm.submit()
我已经仔细检查了我的元素 ID 好几次,虽然我对此很陌生,但我相当有信心我拥有正确的元素 ID。我做错了什么?
这里有多个问题:
A. 得到 url 后,您没有等待页面中的元素完全加载,因此找不到元素
B. 你的定位器对我来说似乎是动态的,例如:input-3
,我认为它是 input-5
(虽然我在 Chrome 浏览器上,但这可能不排除定位器是动态的)。因此,我重构并寻找了一些我粘贴在下面的静态定位器策略。
C. zipcodeElm.submit()
不起作用,因为它不是按钮元素。我也重构了这个。
所以,这是代码。
driver.get('https://knowledge.tonal.com/s/order-status')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "(//div[@data-aura-class='cOrderSearch']//input)[1]")))
orderElm = driver.find_element(By.XPATH, "(//div[@data-aura-class='cOrderSearch']//input)[1]")
orderElm.send_keys('1000XXX')
zipcodeElm = driver.find_element(By.XPATH, "(//div[@data-aura-class='cOrderSearch']//input)[2]")
zipcodeElm.send_keys('90210')
driver.find_element(By.XPATH, "//*[@data-aura-class='cOrderSearch']//parent::div//button").click()
输出:(退出代码 0 表示代码无错通过)
Process finished with exit code 0
发送一个字符序列到你需要归纳的元素WebDriverWait for the
使用
XPATH
:driver.get("https://knowledge.tonal.com/s/order-status") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@data-aura-class='cOrderSearch']//following::input[1]"))).send_keys('1000XXX') driver.find_element(By.XPATH, "//div[@data-aura-class='cOrderSearch']//following::input[2]").send_keys("90210")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
浏览器快照: