Нет такого элемента: невозможно найти элемент с идентификатором в Python / Selenium - PullRequest
1 голос
/ 29 мая 2020

Я получаю следующую ошибку при использовании Selenium в Python для ввода текста в поле поиска на сайте вакансий USPS:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="WD40"]"}

URL: https://wp1-ext.usps.gov/sap/bc/webdynpro/sap/hrrcf_a_unreg_job_search#

driver = webdriver.Chrome("C:/Users/NAME/Downloads/chromedriver_win32/chromedriver.exe")
driver.get("https://wp1-ext.usps.gov/sap/bc/webdynpro/sap/hrrcf_a_unreg_job_search#")
elem = driver.find_element_by_name("WD40")
elem.send_keys("denver")

Когда я погружаюсь в селекторы, в поле ввода появляется следующее:

<input id="WD40" ct="I" lsdata="{29:'WD3E'}" lsevents="{Change:[{ResponseData:'delta',EnqueueCardinality:'single'},{}]}" type="text" tabindex="0" ti="0" class="lsField__input" autocomplete="off" autocorrect="off" name="WD40" style="width:350px;" title="">

Таким образом, я должен иметь возможность ввести идентификатор «WD40» в поле идентификатора, но я все еще получаю эту ошибку.

Отправьте справку.

1 Ответ

0 голосов
/ 30 мая 2020

Требуемый элемент - это элемент Dynami c, поэтому, чтобы найти / click() на элементе с помощью Selenium , вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любую из следующих Стратегий локатора :

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

    driver.get("https://wp1-ext.usps.gov/sap/bc/webdynpro/sap/hrrcf_a_unreg_job_search#")
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.lsField__input"))).send_keys("denver")
    
  • Использование XPATH:

    driver.get("https://wp1-ext.usps.gov/sap/bc/webdynpro/sap/hrrcf_a_unreg_job_search#")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='lsField__input']"))).send_keys("denver")
    
  • Примечание : вам необходимо добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Снимок браузера:

denver

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...