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 毫秒检查一次元素是否存在,将其视为轮询。
我正在尝试测试登录用户是否可以注销。
告诉 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 毫秒检查一次元素是否存在,将其视为轮询。