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

Переопределение аргументов функции при повторном вызове

python
webdriver
Теги: #<Tag:0x00007f7b65423668> #<Tag:0x00007f7b654234d8>

#1

Приветствую,

подскажите, пожалуйста, как побороть следующую проблему с аргументами функции.

В одном файле прописана функция логина + остальные функции для тестов

   driver.find_element_by_id("username").clear()
   driver.find_element_by_id("username").send_keys(username_correct)
   driver.find_element_by_id("password").clear()
   driver.find_element_by_id("password").send_keys(password_correct)
   driver.find_element_by_css_selector("input.btn.btn-primary").click() ```

В файле config.py
указаны различные переменные, в том числе:
```username_correct = "username"
password_correct = "password"
username_correct_other = "username1"
password_correct_other = "password" ```

В файле test_login.py
вызываю функцию логина, передаю ей значения username_correct и password_correct и логин происходит корректно
```def test_login(driver):
   driver.get(base_url)
   login(driver,username_correct, password_correct) ```

Далее выполняются различные действия, в том числе функция logout

После выхода, мне необходимо залогиниться заново, соответственно, опять вызываю функцию login() и передаю ей, в качестве аргументов, другие значения для логина, а именно: username_correct_other и password_correct_other 

```def test_login_other(driver):
   driver.get(base_url)
   login(driver,username_correct_other, password_correct_other) ```

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

Если в функцию login() я добавляю
```f = open("user.txt",'a')
f.write(username + '\n' + password + '\n')
f.close() ```

и смотрю потом файл, то вижу, что аргументы переданы корректно:
```username
password
username1
password ```

Но логин производится с использованием username и password

Как добиться того, что бы второй раз  логин производился с теми параметрами, которые нужны мне и которые я передаю функции

(rmerkushin) #2

Возможно вы опечатались, в функции login вы используете входные параметры username, password а в теле самой функции уже используются username_correct и password_correct :smile: Ну и если это не так, воспользуйтесь дебаггером.


#3

Да, точно, опечатка
было:

а нужно было

driver.find_element_by_id("username").send_keys(username)
driver.find_element_by_id("password").clear()
driver.find_element_by_id("password").send_keys(password)