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


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

    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 

 

二、脚本执行提示:

 

 

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

*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

  解决问题。

 

 

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM