2010-12-14 2 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

Оглядываясь на ваш код, единственное, что я вижу, - это то, что вы определили стандартную строку в первом примере, а строку юникода - во второй.

+0

Да, но без этого конверта в Юникоде Я не вижу разницы во времени исполнения. – user278618

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 

Поскольку он уже делает попытку ... кроме блока, вам не нужно обернуть его в попытке ... кроме снова. Поскольку is_element_present будет возвращать True или False, за исключением: pass часть вашего кода, вероятно, никогда не будет выполнена. Вместо этого просто используйте оператор if.

Я также думаю, что у вас есть опечатка в вашем коде («sel» вместо «self»).

Смежные вопросы