Я пытался ввести значение в поле формы с помощью веб-драйвера в селене. И поверьте мне, я прошел через все решения в Stackoverflow. Но никто из них не работал для меня. Изучая селен, я написал небольшой фрагмент кода, чтобы понять, как он работает.
Итак, вот мой код
from selenium import webdriver
driver= webdriver.Chrome("E:\work\chromedriver_win32\chromedriver.exe")
driver.get('http://127.0.0.1:8000/contact_us/')
driver.find_element_by_id("name").send_keys("Alex")
, а мой html выглядит следующим образом это
<form method="post">
{% csrf_token %}
<div class="row">
<div class="col-6" id="name">
{{ form.name|as_crispy_field }}
</div>
<div class="col-6">
{{ form.email|as_crispy_field }}
</div>
</div>
{{ form.organisation|as_crispy_field }}
<div class="row">
<div class="col-6">
{{ form.phone|as_crispy_field }}
</div>
<div class="col-6">
{{ form.mobile|as_crispy_field }}
</div>
</div>
{{ form.address1|as_crispy_field }}
<div class="row">
<div class="col-6">
{{ form.suburb|as_crispy_field }}
</div>
<div class="col-6">
{{ form.state|as_crispy_field }}
</div>
</div>
<div class="row">
<div class="col-6">
{{ form.country|as_crispy_field }}
</div>
<div class="col-6">
{{ form.pin|as_crispy_field }}
</div>
</div>
<div class="row">
<div class="col-6">
{{ form.source|as_crispy_field }}
</div>
<div class="col-6">
{{ form.permission|as_crispy_field }}
</div>
</div>
<div class="row">
<div class="col-4">
{{ form.permission1|as_crispy_field }}
</div>
<div class="col-4">
{{ form.permission2|as_crispy_field }}
</div>
<div class="col-4">
{{ form.permission3|as_crispy_field }}
</div>
</div>
{{ form.subject|as_crispy_field }}
{{ form.message|as_crispy_field }}
<input type="submit" class="btn btn-primary" value="Submit"/>
</form>
К вашему сведению, я также попытался драйвер неявно ждать. Даже это не сработало для меня. Я проверю код для того же здесь.
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome("E:\work\chromedriver_win32\chromedriver.exe")
driver.get('http://127.0.0.1:8000/contact_us/')
driver.find_element_by_id("name").click()
driver.implicitly_wait(10)
ActionChains(driver).send_keys("Testname")
Я также пытался ждать Webdriver.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome("E:\work\chromedriver_win32\chromedriver.exe")
driver.get('http://127.0.0.1:8000/contact_us/')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "name"))).send_keys("TestName")
Весь код выше показывает ту же ошибку "selenium.common. exceptions.ElementNotInteractableException: Сообщение: элемент не взаимодействует "
Может кто-нибудь помочь с этим. Заранее спасибо