selenium.common.exceptions.NoSuchElementException: Сообщение: такого элемента нет: Невозможно найти элемент: - PullRequest
1 голос
/ 01 июля 2019

XPath не работает с кодом пути ниже.

HTML

<span class="voter_details">
 <h4 class="v_msg" id="v_msg" style="font-size: 14px;margin-bottom:25px;">Hi, you are here XXXfor  in a while, kindly enter your name!</h4>
 <input value="" placeholder="Enter your Name" type="text" id="v" name="v" class="form-control name_box" maxlength="20">
 </span>

Ошибка

selenium.common.exceptions.NoSuchElementException: Message: no such element: 
Unable to locate element: {"method":"xpath","selector":"//*[@id='v']"}

Код

driver.find_element(driver.find_element(By.XPATH, "//*[@id='v']")).send_keys('random.choice(list)')

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Чтобы отправить последовательность символов , вам нужно заставить WebDriverWait для элемента быть активным , и вы можете использовать любое из следующих решений:

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control.name_box#v[placeholder='Enter your Name']"))).send_keys(random.choice(list))
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='form-control name_box' and @id='v'][@placeholder='Enter your Name']"))).send_keys(random.choice(list))
    
  • Примечание : необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
1 голос
/ 01 июля 2019

Используйте следующую xpath для доступа к элементу ввода.

driver.find_element_by_xpath("//input[@placeholder='Enter your Name'][@id='v']").send_keys('Ashwani')

ИЛИ Вы можете использовать WebdriverWait, чтобы дождаться нажатия на элемент и отправить его, а затем ввести значение.

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//input[@placeholder='Enter your Name'][@id='v']"))).send_keys('Ashwani')

Чтобы выполнить это, вам необходимо выполнить следующие операции импорта.

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