2017-05-30 106 views
0

早上好,我的一个脚本出了问题,这是我的一位同事做的。方法()需要3个位置参数,但有4个被给出

主要的一点是要具有延伸一些Python的可用性的封装驱动,在这我们有一些方法,使mousehover动作更容易,还有一些其他功能,在里面,我们有一些像

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'

任何出于我的想法,但没有任何工作,所以,一些帮助将不胜感激。

谢谢!

+0

@Andersson怎么样去思考而不是意外编程呢? –

+0

'wait_and_move_to()'带有一个隐含的'self'和2个参数,所以你的第一个例子是正确的。然而,在'wait_and_move_to()'中调用'self.wait_and_get(self._driver,mode,id)'有一个额外的参数,只需要'self.wait_and_get(mode,id)'。 – AChampion

+0

“我试过(......)任何出于我的想法”:这不是你将要学习的方式。试图理解错误信息和代码(以及你正在使用的语言)是更好的策略......另外,第二个调用示例('sd1.wait_and_move_to(By.XPATH,xpath)')不能导致你发布的错误消息,“没有任何工作”是对问题最无用的描述。 –

回答

3

正确的调用是:

sd1.wait_and_move_to(By.XPATH, xpath) 

sd1被作为第一个参数隐式传递的对象和方法成为selfdef wait_and_move_to(self, mode, id):

但是,如果你看的行号例外情况您会看到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) 
    ... 
+0

它的工作!谢啦! –

+1

不客气。请花点时间了解正在发生的事情,猜测解决方案将不会长期有效。 – AChampion

相关问题