2015-01-19 2 views
1

Я пытаюсь проверить, что зарегистрированные пользователи могут выйти из системы.Python-Selenium не будет ждать обновления моего сайта?

Рассказывать Селен Я вошел в I cookie-jack the sessionid, например, так:

@step(r'I am logged in as "(\w*)"') 
def log_in(step, name): 
    can_login = world.client.login(username=name, password=name) 
    if can_login: 
     session_key = world.client.cookies['sessionid'].value 
     world.browser.add_cookie({'name':'sessionid', 'value':session_key}) 
     world.browser.get(world.browser.current_url) 
     from time import sleep #Really should have to do this 
     sleep(100) 
    else: 
     raise Exception("Could not login with those credentials") 

мне нужно обновить для HTML, чтобы изменить на «входе», но селен занимает так много времени, чтобы обновить страницу (это на localhost, который, как я знаю, может иметь проблемы). У меня есть неявное ожидание в моем terrain.py:

world.browser.implicitly_wait(10) 

Но я не думаю, что это берет эффект. Как я могу сказать, что селен будет ждать загрузки страницы каждый раз?

ответ

1

Неявное ожидание не помогло, так как оно просто говорит, как долго ждать, находя элемент.

Вместо этого вам нужно explicitly wait для элемента появляющейся после загрузки страницы:

world.browser.get(world.browser.current_url) 

element = WebDriverWait(world.browser, 50).until(
    EC.presence_of_element_located((By.ID, "header")) 
) 

Это скажет селен ждать не более 50 секунд, проверяя элемент существования каждые 500 миллисекунд, думать об этом, как опрос ,

+0

Должен ли я по-прежнему использовать неявное ожидание в моей настройке или избыточно? Также могу ли я просто использовать world.browser.refresh()? – Pureferret

+0

Неподвижное ожидание @Pureferret будет применяться для случаев, когда у вас нет явного ожидания - вы можете оставить его, если он не замедляет работу и не помогает. Я не совсем уверен, что происходит с вашей стороны - недостаточно информации, чтобы сказать больше. – alecxe

+0

Достаточно честный. Я слышал, что селен может быть медленным, используя localhost, но я следил за всеми шагами, которые я мог видеть на этом, и я не видел никакой скорости. – Pureferret

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