将Selenium与Python一起使用时引发TimeoutExeption

问题描述

我在脚本的两个不同位置使用webdriverwait,每次语法都相同;第一次使用它只是为了查看我是否有错字-这是在一个类下定义的,第二次是在该类下的函数下定义的。即使语法相同,也会弹出错误提示。请参考下面的代码

element = webdriverwait(self.driver,self.timeout).until(
            EC.presence_of_element_located((By.XPATH,'//div[starts-with(@class,"bill-summary-total")]//div[contains(@data-ng-bind-html,"vm.productList.totalAmt")]')))
        print('Your element is: {}'.format(element.text))


def pay(self):
    time.sleep(10)
    print('You are at this step')
    element = webdriverwait(self.driver,7).until(
        EC.presence_of_element_located((By.XPATH,"vm.productList.totalAmt")]')))
    print('Your element is: {}'.format(element.text))

在所附图片1中,第2步在print('You are at this step').之后停了下来

错误raise TimeoutException(message,screen,stacktrace) selenium.common.exceptions.TimeoutException: Message:

预先感谢您的帮助。

TimeoutException

解决方法

问题通过以下代码解决:

timeout = self.timeout
time.sleep(10)
element = WebDriverWait(self.driver,self.timeout).until(
            EC.presence_of_element_located((By.XPATH,'//div[starts-with(@class,"bill-summary-total")]//div[contains(@data-ng-bind-html,"vm.productList.totalAmt")]')))
print('Your element is: {}'.format(element.text))

错误是由于未在代码中稍后使用self.time之前将self.timeout分配给变量(在这种情况下为超时)。