2010-12-14 20 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”)。