如何摆脱硬编码的sleep()? [英] How to get rid of the hardcoded sleep()?
问题描述
def textfield(boxid,textadded):
project = driver.find_element_by_id(boxid)
project.send_keys(textadded)
sleep(3)
def dropdown(dropdownid, dropdownvalue):
select = Select(driver.find_element_by_id(dropdownid))
select.select_by_visible_text(dropdownvalue)
sleep(5)
这2个功能正常工作,但是我使用的是sleep()
,这是一个不好的做法,因为某些下拉列表和文本字段需要比其他字段更长的填充时间,因此我必须放置最长的睡眠值才能避免出错,如何使用wait修复这两个功能.
These 2 functions are functional however i'm using sleep()
which is a bad practice since some my drop-downs and text fields will take longer than others to fill so i have to put the longest sleep value not to get errors, how can i fix these 2 functions using wait.
推荐答案
在 WebElement 项目上调用send_keys()
时,理想情况下,您应该调用 WebDriverWait ,其中 EC 为element_to_be_clickable
,因此您必须:
As you are invoking send_keys()
on the WebElement project, ideally you should invoke WebDriverWait with EC as element_to_be_clickable
, so you have to:
-
替换:
Replace:
def textfield(boxid,textadded):
project = driver.find_element_by_id(boxid)
project.send_keys(textadded)
sleep(3)
具有:
with:
def textfield(boxid,textadded):
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "boxid"))).send_keys(textadded)
由于下拉列表需要更长的时间,因此您应使用 EC 作为visibility_of_element_located
调用 WebDriverWait ,因此您必须:
As the drop-down take longer to fill so you should invoke WebDriverWait with EC as visibility_of_element_located
, so you have to:
-
替换:
Replace:
def dropdown(dropdownid, dropdownvalue):
select = Select(driver.find_element_by_id(dropdownid))
select.select_by_visible_text(dropdownvalue)
sleep(5)
具有:
with:
def dropdown(dropdownid, dropdownvalue):
select = Select(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "dropdownid"))))
select.select_by_visible_text(dropdownvalue)
注意:您必须添加以下导入:
Note : You have to add the following imports :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
这篇关于如何摆脱硬编码的sleep()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!