这里介绍一些本库内置了人性化设计。 # ✔️ 无处不在的等待 网络环境不稳定,很多时候程序须要稍微等待一下才能继续运行。等待太少,会导致程序出错,等待太多,又会浪费时间。为了解决这些问题,本库在大量须要等待的部分内置了超时功能,并且可以随时灵活设置,大幅降低程序复杂性。 - 查找元素内置等待。可以为每次查找元素单独设定等待时间。有些页面会不定期出现提示信息,如果一律等待会太浪费时间,可以独立设置一个很短的超时时间,避免浪费。 - 等待下拉列表选项。很多下拉列表使用 js 加载,本库选择下拉列表时,会自动等待列表项出现。 - 等待弹窗。有时预期的 alert 未必立刻出现,本库处理 弹窗消息时也可以设置等待。 - 等待元素状态改变。使用`wait_ele()`方法可等待元素出现、消失、删除等状态。 - 点击功能也内置等待,如遇元素被遮挡可不断重试点击。 - 设置页面加载时限及加载策略。有时不需要完整加载页面资源,可根据实际须要设置加载策略。 --- # ✔️ 自动重试连接 在访问网站时,由于网络不稳定可能导致连接异常。本库设置了连接自动重试功能,当网页连接异常,会默认重试 3 次。当然也可以手动设置次数和间隔。 ```python page.get('xxxxxx', retry=5, interval=3) # 出错是重试 5 次,每次间隔 3 秒 ``` --- # ✔️ 极简的定位语法 本库制定了一套简洁高效的查找元素语法,支持链式操作,支持相对定位。与 selenium 繁琐的语法相比简直不要太方便。 而且每次查找内置等待,可以独立设置每次查找超时时间。 同是设置了超时等待的查找,对比一下: ```python # 使用 selenium: element = WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, '//*[contains(text(), "some text")]'))) # 使用 DrissionPage: element = page('some text', timeout=10) ``` --- # ✔️ 无需切入切出,逻辑清晰 使用过 selenium 的人都知道,selenium 同一时间只能操作一个标签页或`