Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Создание функции для передачи через неё текста в поле ввода

python
selenium
Теги: #<Tag:0x00007f7b62339c28> #<Tag:0x00007f7b62339a70>

(Максим Рублёв) #1

Здравствуйте уважаемые знатоки!Хочу создать функцию,при вызове которой будем находить элемент по XPATH
Для клика мыши всё понятно–“def click_xpath(driver, XPATH):
driver.find_element_by_xpath(XPATH).click()”
Хотелось бы сделать,что-то подобное для заполнения текстового поля собственно вопрос,как передать в эту функцию переменную с текстовым или численным значением?–
“def send_keys(driver, XPATH,?):
driver.find_element_by_xpath(XPATH).send_keys()”
|
|
|
def wait_xpath(driver, XPATH):
wait=WebDriverWait(driver,25)
try:
wait.until(EC.element_to_be_clickable((By.XPATH, XPATH)))
except Exception:
print(“Элемент на форме не загрузился” +XPATH)
wait_xpath(driver, XPATH)
def send_keysX(driver, XPATH,send_keys):
driver.find_element_by_xpath(XPATH).send_keys()
|
|
|
Home="//input[@name=‘HOUSE’]"
wait_xpath(driver, Home)
send_keysX(driver, Home, “123”)
При попытке реализовать функцию таким образом она передаёт пустое значение в поле ввода,если же явно передавать значение в функцию,то работает,но мне такой вариант не подходит.


(Ильдар Бекмансуров) #2

Вы в своей реализации send_keysX() в send_keys() ничего не передаете, поэтому и вводится пустота.
А вот так должно сработать:

def send_keysX(driver, XPATH, text):
    driver.find_element_by_xpath(XPATH).send_keys(text)

Home="//input[@name='HOUSE']"
my_text = "123"
send_keysX(driver, Home, my_text)

Туториал - как вставлять код. Я сам тоже его только что просмотрел.


(Максим Рублёв) #3

Спасибо вам о великий! очень помогли реально голову ломал себе,я новичок совсем в этой области пытаюсь вникнуть по максимуму и одновременно научится писать красивый и читабельный код с использованием функций. По больше бы таких людей ещё раз спасибо Ильдар!