使用 selenium 在文本字段中设置值。 selenium.common.exceptions.NoSuchElementException:消息:无法定位元素:
Setting a value in a text field using selenium. selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:
我是网络抓取的新手 python。我的任务是使用 selenium 为提及项 URL 设置文本框名称“rcdate”的值。然后抓取过滤后的值。当它是 运行 时,它给出了这个异常。这是我尝试 运行
的代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get("http://www.irrigation.gov.lk/index.php?option=com_reservoirdata&Itemid=255&lang=en")
wait = WebDriverWait(browser, 10)
wait.until(EC.presence_of_element_located((By.ID, 'rcdate')))
browser.find_element_by_tag_name("rcdate").send_keys("2018-10-01")
那么错误信息是
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: rcdate
Html
<input type="text" name="rcdate" id="rcdate" value="2018-10-11">
我在尝试访问 url http://www.irrigation.gov.lk/index.php?option=com_reservoirdata&Itemid=255&lang=en
时收到 ERROR 403 - FORBIDDEN
但是,一旦您找到元素并在尝试调用 send_keys()
方法时继续前进,因此您应该使用 而不是 expected_conditions 作为 presence_of_element_located()
element_to_be_clickable()
如下:
CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#rcdate"))).send_keys("2018-10-01")
ID
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "rcdate"))).send_keys("2018-10-01")
使用
find_element_by_name() # locate element by the "name" attribute
不要与
混淆
find_element_by_tag_name() # locate element by the element tag ("input" in this case)
你在这一行做错了,所以
使用这条线,
browser.find_element_by_tag_name("rcdate").send_keys("2018-10-01")
没有意义,因为不存在这样的标签,而您使用的是标签名称 "rcdate"、
使用其中之一,
browser.find_element_by_id("rcdate").send_keys("2018-10-01")
browser.find_element_by_name("rcdate").send_keys("2018-10-01")
或
希望对您有所帮助,
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get("http://www.irrigation.gov.lk/index.php?option=com_reservoirdata&Itemid=255&lang=en")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#rcdate"))).send_keys("2018-10-01")
我是网络抓取的新手 python。我的任务是使用 selenium 为提及项 URL 设置文本框名称“rcdate”的值。然后抓取过滤后的值。当它是 运行 时,它给出了这个异常。这是我尝试 运行
的代码from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get("http://www.irrigation.gov.lk/index.php?option=com_reservoirdata&Itemid=255&lang=en")
wait = WebDriverWait(browser, 10)
wait.until(EC.presence_of_element_located((By.ID, 'rcdate')))
browser.find_element_by_tag_name("rcdate").send_keys("2018-10-01")
那么错误信息是
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: rcdate
Html
<input type="text" name="rcdate" id="rcdate" value="2018-10-11">
我在尝试访问 url http://www.irrigation.gov.lk/index.php?option=com_reservoirdata&Itemid=255&lang=en
但是,一旦您找到元素并在尝试调用 send_keys()
方法时继续前进,因此您应该使用 而不是 expected_conditions 作为 presence_of_element_located()
element_to_be_clickable()
如下:
CSS_SELECTOR
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#rcdate"))).send_keys("2018-10-01")
ID
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "rcdate"))).send_keys("2018-10-01")
使用
find_element_by_name() # locate element by the "name" attribute
不要与
混淆find_element_by_tag_name() # locate element by the element tag ("input" in this case)
你在这一行做错了,所以 使用这条线,
browser.find_element_by_tag_name("rcdate").send_keys("2018-10-01")
没有意义,因为不存在这样的标签,而您使用的是标签名称 "rcdate"、
使用其中之一,
browser.find_element_by_id("rcdate").send_keys("2018-10-01")
browser.find_element_by_name("rcdate").send_keys("2018-10-01")
或
希望对您有所帮助,
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get("http://www.irrigation.gov.lk/index.php?option=com_reservoirdata&Itemid=255&lang=en")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#rcdate"))).send_keys("2018-10-01")