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