学习python视频看到lambda表达式没看懂, 目的是将查找的多个元素进行显示等待查找。问问 以下len>0 的具体怎么执行的? 为什么要有这个len,去掉不可以吗?
1、判断如果是一个字典,进入if体内
2、将变量的第一个self.driver.find_element(By.ID, locate)传给X并执行wt.unitl进行显示等待
3、将变量的最后一个self.driver.find_element(By.ID, locate)传给X并执行wt.unitl进行显示等待
4、判断 len>0 , 为false的时候内部是怎么走的? 直接退出if?
def wait(self, locate, timeout=20):
wt = WebDriverWait(self.driver, timeout)
if isinstance(locate, tuple):
wt.until(lambda x: len(self.driver.find_element(By.ID, *locate)) > 0)
wt.until
的参数为一个lambda表达式,结果为boolean类型,即等待10s直到满足某一个条件。这个条件就是你查找的元素个数大于0。
你的问题,去掉len可以吗?这个条件是根据你的需要来的,你改成什么都可以,前提是满足业务需求。
如果条件一直不满足,等到超时时间到了,就会抛出Timeout的异常。这种可预知的情况应该catch住再进一步处理。
明白了感谢