定制的is_element_present执行缓慢

时间:2010-12-14 14:24:59

标签: python selenium selenium-rc

我有另一种方法的方法体:

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秒内执行,所以非常奇怪。

你有什么想法吗?

2 个答案:

答案 0 :(得分:0)

快速查看代码,我唯一能看到的是你在第一个例子中定义了一个标准字符串,而在第二个例子中定义了一个unicode字符串。

答案 1 :(得分: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 ...中。由于is_element_present只返回True或False,因此可能永远不会执行except:pass部分代码。相反,只需使用if语句。

我也认为你的代码中有拼写错误(“sel”而不是“self”)。