Перейти к содержимому

Фотография

Загрузка файла


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 RoenEr

RoenEr

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Коган Дмитрий

Отправлено 27 декабря 2020 - 14:42

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

Есть файл c локаторами "locators.py":

class LocStatmentsPage(BasePage):
    uploadStatmentButton = (By.XPATH, "//div[@class='flex-column flex-no-shrink']//input[@type='file']")

Так же есть файл "BaseApp.py" (тут у меня действия с локаторами и ожидания)

class BasePage:

    def do_click(self, locator, time=10):
        WebDriverWait(self.driver, time).until(EC.visibility_of_element_located(locator),
        message=f"Не нашел куда нажать. Адрес: {locator}").click()

    def do_send_keys(self, locator, text, time=10):
        WebDriverWait(self.driver, time).until(EC.visibility_of_element_located(locator),
        message=f"Не нашел куда написать. Адрес: {locator}").send_keys(text)

файл statmentsPage.py с действиями на этой странице:

class StatmentsPage(BasePage):

    def upload_statment(self, file):
    return self.do_send_keys(LocStatmentsPage.uploadStatmentButton, file)

И собственно сам тест кейс пишу:

1)Все срабатывает нормально если я пишут так:

def test_load
    ...
    self.driver.find_element(By.XPATH, "//div[@class='flex-column flex-no-shrink']//input[@type='file']").send_keys("D:\\file.xlsx")

2)А вот еси я пишу так все вылетает с ошибкой не найденного локатора по истечению заданных 10 секунд ожидания:

def test_load
    ...
    self.elStatmentsPage = StatmentsPage(self.driver)
    self.elStatmentsPage.upload_statment("D:\\file.xlsx")

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


  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 05 января 2021 - 12:37

Пробовали сравнить значения (локаторов), одинаковы они или нет при выполнении тестов?


  • 1

#3 vladMat

vladMat

    Новый участник

  • Members
  • Pip
  • 13 сообщений

Отправлено 07 января 2021 - 06:40

Очень похоже что неправильно определен контекст self.driver. self.driver должен инициализироваться в BasePage, тогда в методы BasePage попадет правильный контекст.

Первое что могу предложить, это убрать в функции do_send_keys - WebDriverWait(self.driver, time).until(EC.visibility_of_element_located(locator),
message=f"Не нашел куда написать. Адрес: {locator}")
Для пробы заменить их на time.wait и self.driver.find_element(*locator).send_keys(text)


 


  • 1

#4 RoenEr

RoenEr

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Коган Дмитрий

Отправлено 06 апреля 2021 - 06:55

Очень похоже что неправильно определен контекст self.driver. self.driver должен инициализироваться в BasePage, тогда в методы BasePage попадет правильный контекст.

Первое что могу предложить, это убрать в функции do_send_keys - WebDriverWait(self.driver, time).until(EC.visibility_of_element_located(locator),
message=f"Не нашел куда написать. Адрес: {locator}")
Для пробы заменить их на time.wait и self.driver.find_element(*locator).send_keys(text)

 

Получилось победить. Вся проблема была в "visibility_of_element_located(locator)". После изменения на invisibility_of_element_located все стало работать нормально.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных