2010-12-14 48 views
0

緩慢執行我在另一種方法中的方法主體:定製is_element_present

for i in range(60): 
    try: 
     if sel.is_element_present("//div[@id='result']/form[3]/strong/div/button"): break 
    except: pass 
    time.sleep(1) 

和它在5秒內執行。現場

沒有什麼變化,我執行這一行:

self.WaitForElement(u"//div[@id='result']/form[3]/strong/div/button")  


def WaitForElement(self,name): 
    for i in range(60): 
     try: 
      if sel.is_element_present(name): break 
     except: pass 
     time.sleep(1) 

,並執行了近30秒,這是非常奇怪的。

你有什麼想法嗎?

回答

0

快速查看代碼,我唯一能看到的是在第一個示例中定義了一個標準字符串,而在第二個示例中定義了一個unicode字符串。

+0

是的,但沒有這個Unicode轉換我沒有看到任何執行時間的差異。 – user278618 2010-12-14 20:05:49

0

以下是我對is_element_present方法:

def is_element_present(self, how, what): 
    try: self.driver.find_element(by=how, value=what) 
    except NoSuchElementException, e: return False 
    return True 

,因爲它已經做了try ... except塊,你不需要包裝在嘗試...除了一次。由於is_element_present將只返回True或False,所以你的代碼中的except:pass部分可能永遠不會被執行。相反,只需使用if語句。

我也認爲你的代碼有錯字(「sel」而不是「self」)。