如何区别 until 和 not until

until 和not until

这就涉及到延续性动词和短暂性动词了。如:

I’ve been playing this game for 3 years. (play为延续性动词)

I’ve been beginning this game for 3 days. (begin为短暂性动词,一个瞬间动作“开始“怎么能持续三天呢?开始就是开始,没开始就是没开始,所以这句话是错误的

I’ll wait until they stop. (wait为延续性动词)

我将会一直等,直到他们停下来。(可知until前面应是延续性动词,否则又怎么可能一直做一件事直到某个点呢。)

I’ll leave until they stop. (leave为短暂性/非延续性动词)

,我将会离开直到他们停下来?很明显不对,所以这是个错误的句子。正确的应该为:

I won‘t leave until they stop.

正确的原因是:虽然leave这个瞬间动作无法延续,但是not leave这个是状态,状态是可以一直延续的呀。“我将不会离开,直到他们停下来“

总结:

until前面接的是可延续性的动词。

not until前面接的是不可延续性/短暂性的动作,或理解为就是将一个不可延续性/短暂性的动作变为一个可延续性的状态而已。

### Selenium 中 `WebDriverWait` 的使用 为了实现更灵活的等待机制,Selenium 提供了显式等待的功能。通过 `WebDriverWait` 类可以设置最大等待时间轮询间隔时间来等待某个特定条件的发生。 #### 使用 `WebDriverWait` 结合预期条件 Python 中可以通过导入 `expected_conditions` 来定义各种不同的等待条件: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By ``` 下面是一个具体的例子展示如何利用 `WebDriverWait` 实现直到页面加载完成并找到指定元素才继续执行后续操作[^1]: ```python # 设置最长等待时间为10秒 wait = WebDriverWait(browser, timeout=10) try: # 等待直至目标元素可见 element = wait.until( EC.presence_of_element_located((By.XPATH, "//dd[@class='desc']//a")) ) finally: pass # 处理异常情况下的逻辑 ``` 这里使用的 `presence_of_element_located()` 是一种常见的预期条件函数,用于检测某元素是否存在于DOM中并且是可见状态。如果在这个设定的时间内找到了该元素,则立即返回;否则抛出超时异常。 除了上述提到的方法外,还有其他多种内置的预期条件可供选择,比如 `visibility_of_element_located`, `element_to_be_clickable`, 或者自定义复杂的组合条件等[^4]。 对于更加复杂的应用场景,还可以创建自己的预期条件类实例化对象作为参数传递给 `until()` 方法。这允许开发者编写高度定制化的等待策略以适应具体需求。 #### 自定义等待条件示例 当默认提供的几种常见条件无法满足业务需求时,可以根据实际情况设计个性化的判定规则。例如,在处理JavaScript弹框的情况下,可采用如下方式: ```python def custom_alert_is_present(): """自定义判断是否存在alert""" def _predicate(driver): try: return driver.switch_to.alert is not None except NoAlertPresentException: return False return _predicate # 应用自定义条件 wait.until(custom_alert_is_present()) ``` 此代码片段展示了怎样构建一个简单的闭包结构 `_predicate` 函数,并将其封装成一个新的预期条件形式以便于调用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值