我有一个像这样的东西
el = WebDriverWait(browser, 10).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, "till-cap"))
)
上面代码的问题是,它不等待所有元素,它返回5个而不是12个元素,有时元素可能更多或更少,我通过在Python中使用time.sleep(15)
来解决这个问题,等待15秒.但我觉得这不是解决这个问题的最好办法.谢谢.
我有一个像这样的东西
el = WebDriverWait(browser, 10).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, "till-cap"))
)
上面代码的问题是,它不等待所有元素,它返回5个而不是12个元素,有时元素可能更多或更少,我通过在Python中使用time.sleep(15)
来解决这个问题,等待15秒.但我觉得这不是解决这个问题的最好办法.谢谢.
尽管该功能不是Selify中的原生函数,但您可以实现一个lambda函数来验证存在多少元素,然后再继续:
WebDriverWait(browser,10).until(lambda method: len(EC.presence_of_all_elements_located(By.CSS_SELECTOR, "till-cap")) == 12)
Java为这个用例提供了SelSelum原生功能,但在Python中,我们必须临时使用lambda方法.为了避免出现lambda,您可以将time.Sept()放在WebDriverWait函数之后,因为其余元素通常在第一个元素之后不久填充:
el = WebDriverWait(browser, 10).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, "till-cap"))
)
time.sleep(2)
这可以使您减少所需的时间.睡眠(),但是您很可能需要测试几次才能看到所需的最短时间.