2016-04-19 2 views
0

не смог найти конкретный ответ на мой вопрос в других постах, так вот он идет:Изменение статической переменной класса из другого класса/модуля

Мне нужно изменить переменную статического класса из другого класса/модуля. Я получил мой класс LoginPage со статическим переменным администратором

class LoginPage(BasePage): 

    #Users 
    admin = ["[email protected]","Password1234!"] 
    basicUser = ["[email protected]", "Password1234!"] 

и я получил свой профиль тестового класса, который имеет использует Changepassword метод/тест:

class MyProfileTests(BaseTestCase, LoginPage): 
    def test_change_password(self): 
     try: 
      self.loginAs(self.basicUser) 
      MyProfilePage(self.driver).changePassword('Password007$$') 

и, наконец, Changepassword метод

def changePassword(self, new_password): 
     self.driver.find_element_by_xpath(self._change_pw).click() 

     password_fields = self.driver.find_elements_by_xpath(".//*[@class='form-group']/*/input") 

     password_fields[1].send_keys(new_password) 
     self.submit_button.click() 

     #Changing password for the LoginPage object 
     self._passwordChange(new_password) 

    def _passwordChange(self, password): 

     try: 
      self.driver.find_element(by=By.XPATH, value = '//*[contains(text(), "Password successfully changed.")]') 
      LoginPage.admin[1] = password 

     except NoSuchElementException: 
      pass 

проблема в том, что он, похоже, не изменяет фактический объект, который является LoginPage.admin. Идея здесь заключается в том, когда я использую метод changePassword, который мне не нужно вручную обновлять пароль для admin/basicuser, если мне нужно будет входить в систему для теста differnt.

+0

Вы уверены, что есть элемент на странице с XPath '' // * [содержит (текст(), «Пароль успешно изменен. «)] ''? Может быть, вы должны попытаться добавить неявное/явное ожидание ... P.S. Есть ли причина создавать класс 'LoginPage', который содержит только два списка? Кажется, вы слишком усложняете свой код – Andersson

+0

эй, первый вопрос - да, потому что в системе пароль изменен, и мой метод loginAs() больше не работает со старым паролем. Второй вопрос - я просто поместил количество кода, которое, по моему мнению, было необходимо для вопроса. Я получил как 4 метода, которые не имеют ничего общего с моей проблемой;) –

+0

Нет, вы не понимаете :) Я имею в виду, что элемент с указанным XPath ** действительно присутствует (доступен) на странице ** в момент, когда вы Проверь это? Иногда странице требуется некоторое время для полного рендеринга (для отображения всех элементов), поэтому вам нужно добавить несколько секунд, прежде чем проверять наличие элемента. – Andersson

ответ

0

Кажется, что я хотел сделать, это динамически модифицировать строку кода в LoginPage.py, который не работает с моим кодом и, вероятно, потребует некоторых дополнительных знаний. Я решил сохранить все логины в отдельном файле .txt, который решил проблему.

Смежные вопросы