Установка значения в текстовом поле с помощью селена.selenium.common.exceptions.NoSuchElementException: Сообщение: невозможно найти элемент: - PullRequest
0 голосов
/ 11 октября 2018

Я новичок в изучении веб-приложений и Python.Моя задача - установить значение для имени текстового поля «rcdate» для URL-адреса упоминания с помощью селена.Затем очистите значения, которые были отфильтрованы.когда он запускается, он дает это исключение.Это код, который я пытаюсь запустить

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")

Тогда сообщение об ошибке Msg будет

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: rcdate

HTML

<input type="text" name="rcdate" id="rcdate" value="2018-10-11">

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Использование

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)
0 голосов
/ 11 октября 2018

Вы ошибаетесь в этой строке, поэтому использование этой строки

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")
0 голосов
/ 11 октября 2018

Я получаю ОШИБКУ 403 - ЗАПРЕЩЕНО при попытке доступа к URL http://www.irrigation.gov.lk/index.php?option=com_reservoirdata&Itemid=255&lang=en

Однако, как только вы найдете элемент и двигаетесь вперед, когда пытаетесь вызвать send_keys()метод, поэтому вместо ожидаемых условий как 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")
    
...