定义更短的等待功能

时间:2018-05-08 11:59:00

标签: python selenium-webdriver

设置

我正在使用Selenium和Python 3.x填写表单,并使用常见的WebDriverWait函数来等待元素加载。例如。

WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.CLASS_NAME, 'class-name')))

其中browser = webdriver.Firefox('/my/path/to/geckodriver')

问题

该行经常在代码中返回;我想定义它的较短版本以提高可读性。

到目前为止,我已经有了,

wait = WebDriverWait(browser, 10)

def wait(x,y):
    if x == 'cn':
        wait.until(EC.visibility_of_element_located((By.CLASS_NAME,y)))
    elif x == 'xp':
        wait.until(EC.visibility_of_element_located((By.XPATH,y)))     

但是y并没有很好地完成,我得到了一个,

AttributeError: 'function' object has no attribute 'until'

如何在函数中正确插入y

1 个答案:

答案 0 :(得分:3)

wait = WebDriverWait(browser, 10)

def wait(x,y):

您不应该在同一范围内拥有变量和具有相同名称的函数。一个人会覆盖另一个人。当您在wait.until函数中调用wait时,它认为您的意思是"调用属于名为until"的函数的wait方法。但是函数没有名为wait的方法。

为其中一个选择其他名称。