设置
我正在使用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
?
答案 0 :(得分:3)
wait = WebDriverWait(browser, 10)
def wait(x,y):
您不应该在同一范围内拥有变量和具有相同名称的函数。一个人会覆盖另一个人。当您在wait.until
函数中调用wait
时,它认为您的意思是"调用属于名为until
"的函数的wait
方法。但是函数没有名为wait
的方法。
为其中一个选择其他名称。