Почему не вставляется текст в форму? Версия selenium 4.9.0

Рейтинг: 0Ответов: 2Опубликовано: 25.04.2023
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')

Ответы

▲ 0

я использовал сафари , так как у меня нет фаерфокс + нужно в настройках поставить галочку "Разрешить удаленную автоматизацию"

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()  # закрытие окна
▲ 0

У вас в коде только одна ошибка, смотрите что вам пишут в ошибках:

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)

В остальном код вполне рабочий. Никогда не забывайте смотреть что вам выводится в ошибках.