【selenium】,* 传递参数的问题: __init__() takes 2 positional arguments but 3 were given

2年前 (2022) 程序员胖胖胖虎阿
267 0 0

一,在做自动化测试时候,显示等待封装一下定位元素的方法:

def find_element(self, *loc):
        try:
            WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(*loc))
            return self.driver.find_element(*loc)
        except Exception as e:
            raise e 

 

二、脚本执行提示:

【selenium】,* 传递参数的问题: __init__() takes 2 positional arguments but 3 were given

 

 

 意思就是,传入了三个参数,但是只有两个位置;

*loc 代表的是有三个参数:self,xpath和路径地址

login_password_loc = (By.XPATH, "//input[@type='password']")

*parameter是用来接受任意多个参数并将其放在一个元组中;

所以,函数在调用多个参数时,在列表、元组、集合、字典及其他可迭代对象作为实参,并在前面加 *

如   *(1,2,3)解释器将自动进行解包然后传递给多个单变量参数(参数个数要对应相等)

修改为:

def find_element(self, *loc):
        try:
            WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located(loc))
            return self.driver.find_element(*loc)
        except Exception as e:
            raise e

  解决问题。

 

 

 

 

 

 

 

 

 

相关文章

暂无评论

暂无评论...