Python-Selenium 不会等待我的网站刷新?

Python-Selenium won't wait for my website to refresh?

我正在尝试测试登录用户是否可以注销。

告诉 Selenium 我已经登录 ,像这样:

@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 才能在 'login' 上更改,但是 selenium 刷新页面需要很长时间(它在本地主机上,我知道这可能有问题)。我的 terrain.py:

中确实有隐式等待
world.browser.implicitly_wait(10)

但我认为它没有生效。如何让 selenium 每次都等待页面加载?

隐式等待无济于事,因为它只是告诉您在查找元素时等待多长时间。

相反,对于页面加载后出现的元素,您需要 explicitly wait

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

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

这将告诉 selenium 最多等待 50 秒,每 500 毫秒检查一次元素是否存在,将其视为轮询。