2016-09-22 93 views
0

給出了錯誤的硒webdriverwait:__init __()究竟需要兩個參數(3給出)

Traceback (most recent call last): 
    File "p3.py", line 21, in <module> 
    WebDriverWait(driver, timex).until(EC.presence_of_element_located(by, element)) 
TypeError: __init__() takes exactly 2 arguments (3 given) 

我沒有用過__init__()這是爲什麼錯誤呢?

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
import time 

chrome_path=r"C:\Users\Bhanwar\Desktop\New folder (2)\chromedriver.exe" 
driver =webdriver.Chrome(chrome_path) 
driver.get("https://priceraja.com/mobile/pricelist/samsung-mobile-price-list-in-india") 
#driver.implicitly_wait(10) 
i=0 
timex = 5 
by = By.ID 
hook = "product-itmes-" # The id of one item, they seems to be this plus 
         # the number item that they are 
button = '.loadmore' 
while i<3: 
    element_number = 25*i 
    element=hook+str(element_number)# It looks like there are 25 items added each time, and starts at 25 
    WebDriverWait(driver, timex).until(EC.presence_of_element_located(by, element)) 
    driver.find_element_by_css_selector(button).click() 
    time.sleep(5) # Makes the page wait for the element to change 
    i+=1 
+1

請不要手動輸入回溯或重新格式化它們。例如,我懷疑實際的錯誤可能會說'__init __()'而不是'init()'。 –

+0

需要此解決方案 –

+1

然後在您的報告中確保您**準確**。這個*是由'__init__'方法引起的;這是創建實例時調用的方法。 'presence_of_element_located()'是一個帶'__init__'方法的類,它只需要一個'locator',而不是兩個參數。 –

回答

2

presence_of_element_located()只需要一個參數,一個定位器,它是一個元組。您忘記在呼叫中添加一個元組所需的(...)圓括號:

WebDriverWait(driver, timex).until(
    EC.presence_of_element_located((by, element))) 
#   these make this a tuple^and  ^
+0

我們是否應該回答印刷錯誤或關閉它們的問題? –

+0

@PadraicCunningham:不確定這是否是排印問題。如果你認爲它是可以投票結束的話。 –

+0

根據http://socvr.org/中的一些人的說法,我們只是應該關閉而不回答,以便它們可以更容易地刪除。你是一個國防部,所以我問了這個問題。 –

相關問題