не смог найти конкретный ответ на мой вопрос в других постах, так вот он идет:Изменение статической переменной класса из другого класса/модуля
Мне нужно изменить переменную статического класса из другого класса/модуля. Я получил мой класс 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.
Вы уверены, что есть элемент на странице с XPath '' // * [содержит (текст(), «Пароль успешно изменен. «)] ''? Может быть, вы должны попытаться добавить неявное/явное ожидание ... P.S. Есть ли причина создавать класс 'LoginPage', который содержит только два списка? Кажется, вы слишком усложняете свой код – Andersson
эй, первый вопрос - да, потому что в системе пароль изменен, и мой метод loginAs() больше не работает со старым паролем. Второй вопрос - я просто поместил количество кода, которое, по моему мнению, было необходимо для вопроса. Я получил как 4 метода, которые не имеют ничего общего с моей проблемой;) –
Нет, вы не понимаете :) Я имею в виду, что элемент с указанным XPath ** действительно присутствует (доступен) на странице ** в момент, когда вы Проверь это? Иногда странице требуется некоторое время для полного рендеринга (для отображения всех элементов), поэтому вам нужно добавить несколько секунд, прежде чем проверять наличие элемента. – Andersson