Почему не вставляется текст в форму? Версия selenium 4.9.0
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get("https://suip.biz/ru/?act=findomain")
xpath = '/html/body/div[1]/div[2]/div[2]/article[1]/form/table/tbody/tr[1]/td[2]/input'
elem = driver.find_element(By.XPATH,xpath)
elem.clear()
elem.send_keys('example')
Ответы (2 шт):
я использовал сафари , так как у меня нет фаерфокс + нужно в настройках поставить галочку "Разрешить удаленную автоматизацию"
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Safari()
driver.get("https://suip.biz/ru/?act=findomain")
xpath = '/html/body/div[1]/div[2]/div[2]/article[1]/form/table/tbody/tr[1]/td[2]/input'
wait = WebDriverWait(driver, 10) # установка времени ожидания в 10 секунд
elem = wait.until(EC.visibility_of_element_located((By.XPATH, xpath)))
elem.clear()
elem.send_keys('example')
time.sleep(10) # задержка в 10 секунд перед закрытием окна
driver.quit() # закрытие окна
У вас в коде только одна ошибка, смотрите что вам пишут в ошибках:
TypeError: 'str' object is not callable
Происходит это, потому что синтаксис у вас где-то потерялся. Тут два варианта есть:
использовать
.find_element(), тут вроде всё хорошо, ноBy.XPATH— это не функция, поэтому необходимо передавать так:
driver.find_element(By.XPATH, xpath)
Т.е. передаём как ищем и что ищем через запятую. Можно не импортироватьBy.XPATH, т.к. это всего лишь словарь, а вместо него написать'xpath', но лучше так не делать.но можно также использовать
.find_element_by_xpath(), тогда получится
driver.find_element_by_xpath(xpath)
В остальном код вполне рабочий. Никогда не забывайте смотреть что вам выводится в ошибках.