Skip to main content
 首页 » 编程设计

python之Method() 采用 3 个位置参数,但给出了 4 个

2025年05月04日25linjiqin

早上好,我的一个脚本一直有问题,这是我的一位同事制作的。

重点是有一个包装器驱动程序,它扩展了 python 的一些可用性,在其中我们有一些方法可以使鼠标悬停操作更容易,还有一些其他功能,在其中,我们有类似的东西

Class SuperDriver:  
    def __init__(self, driver: object) -> object: 
        self._driver = driver 
 
    def wait_and_get(self, mode, key): 
        return WebDriverWait(self._driver, self.WAIT_TIMEOUT).until(EC.visibility_of_element_located((mode, key))) 
 
    def wait_and_move_to(self, mode, id): 
        elem = self.wait_and_get(self._driver, mode, id) 
        ActionChains(self._driver).move_to_element(elem).perform() 

当我尝试在另一个脚本中使用它时,我会使用

from utils.super_driver.SuperDriver import SuperDriver 
 
Class class1: 
      def class1_test(self): 
 
          sd1 = Superdriver(driver) 
 
          sd1.wait_and_move_to(driver, By.XPATH, xpath) 

然后它说

TypeError: wait_and_move_to() takes 3 positional arguments but 4 were given

我试过

   sd1.wait_and_move_to(By.XPATH, xpath) 

这次说

TypeError: wait_and_get() takes 3 positional arguments but 4 were given

   sd1.wait_and_move_to(xpath) 

这导致了

TypeError: wait_and_move_to() missing 1 required positional argument: 'id'

   sd1.wait_and_move_to(self, By.XPATH, xpath) 

这一个导致了

TypeError: wait_and_move_to() missing 1 required positional argument: 'id'

我想到的任何事情,但没有任何效果,因此,我们将不胜感激。

谢谢!

请您参考如下方法:

正确的调用是:

sd1.wait_and_move_to(By.XPATH, xpath) 

对象 sd1 作为第一个参数隐式传递,并在方法 def wait_and_move_to(self, mode, id) 中变成 self:

但是,如果您要查看异常的行号,您会看到从此处抛出 TypeError:

def wait_and_move_to(self, mode, id): 
    elem = self.wait_and_get(self._driver, mode, id) 
                             ^^^^^^^^^^^^ 

正确的调用是:

def wait_and_move_to(self, mode, id): 
    elem = self.wait_and_get(mode, id) 
    ...