Функция, не ожидающая запланированного периода времени - Python Selenium

У меня есть функция, которая возвращает мне элемент на основе xpath.

DEFAULT_WAIT_TIME_SEC = 10
def wait_for_element_by_xpath(self, xpath,
                                  wait_time=DEFAULT_WAIT_TIME_SEC):
        print ("wait_time")
        print (wait_time)
        result = self.driver.find_element(By.XPATH, xpath)
        wait = WebDriverWait(self.driver, wait_time)
        wait.until(EC.element_to_be_clickable((By.XPATH, xpath)))
        return self.driver.find_element(By.XPATH, xpath)

Я намеренно установил время ожидания по умолчанию равным 10 секундам.

        timeValue = "//span[contains(text(),'online Time')]"
        self.wait_for_element_by_xpath(timeValue, 70)

Я потратил 70 секунд на этот конкретный вызов, чтобы дождаться появления элемента на экране. Но когда я запускаю свой тест, он ждет всего 10 секунд и выдает исключение NoSuchElementException.

Я намеренно напечатал wait_time в своей функции, чтобы проверить, какое время оно выбирает, время по умолчанию или мое заданное время (70 секунд).

wait_time печатает 70.

Так почему же он выдает исключение через 10 секунд, а не ждет запланированных 70 секунд?


person UZ_IT    schedule 17.07.2018    source источник


Ответы (1)


Вы должны удалить строку result = self.driver.find_element(By.XPATH, xpath) из определения функции. Попробуйте код ниже:

DEFAULT_WAIT_TIME_SEC = 10
def wait_for_element_by_xpath(self, xpath,
                                  wait_time=DEFAULT_WAIT_TIME_SEC):
        print ("wait_time is %s" % wait_time)
        wait = WebDriverWait(self.driver, wait_time)
        element = wait.until(EC.element_to_be_clickable((By.XPATH, xpath)))
        return element
person Andersson    schedule 17.07.2018