函数未等待预期的时间段-Python Selenium

时间:2018-07-17 10:31:41

标签: python python-3.x selenium-webdriver automation webdriver

我有一个函数可以根据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秒?

1 个答案:

答案 0 :(得分: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