早上好,我的一個腳本出了問題,這是我的一位同事做的。方法()需要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'
任何出於我的想法,但沒有任何工作,所以,一些幫助將不勝感激。
謝謝!
@Andersson怎麼樣去思考而不是意外編程呢? –
'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
「我試過(......)任何出於我的想法」:這不是你將要學習的方式。試圖理解錯誤信息和代碼(以及你正在使用的語言)是更好的策略......另外,第二個調用示例('sd1.wait_and_move_to(By.XPATH,xpath)')不能導致你發佈的錯誤消息,「沒有任何工作」是對問題最無用的描述。 –