当前位置: 首页 > news >正文

selenium 显示等待12种预置条件包括定制等待条件

基础

等待元素可见

例:设置最大等待时间为 15 秒,直到指定元素在页面上可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.element_to_be_clickable((By.ID,'element_id')))

等待元素不可见

例:设置最大等待时间为 15 秒,直到指定元素在页面上不可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.invisibility_of_element_located((By.ID,'element_id')))

等待元素可点击

例:设置最大等待时间为 15 秒,直到指定元素变为可点击状态。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.element_to_be_clickable((By.ID,'element_id')))

等待文本可见

例:设置最大等待时间为 15 秒,直到指定元素的文本可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.text_to_be_present_in_element((By.ID,'element_id'),'Expected_Text'))

等待文本在元素里可见

例:设置最大等待时间为 15 秒,直到指定文本在元素的值中可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.text_to_be_present_in_element_value((By.ID,'frame_id'),"Expected_Title"))

等待元素存在

例:设置最大等待时间为 15 秒,直到指定元素存在 DOM 中。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.presence_of_element_located((By.ID,'element_id')))

等待元素消失

例:设置最大等待时间为 15 秒,直到指定元素从 DOM 中移除。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.staleness_of(driver.find_element(By.ID,'element_id')))

URL 包含

例:设置最大等待时间为 15 秒,直到当前 URL 包含某个特定字符串。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.url_contains('expected_substring'))

标题包含

例:设置最大等待时间为 15 秒,直到当前页面标题包含某个字符串。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.title_contains('Expected Title')))

窗口可见

例:设置最大等待时间为 15 秒,直到新窗口出现并可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.new_window_is_opened(driver.window_handles))

等待切换iframe

例:设置最大等待时间为 15 秒,直到切换到某个 iframe 元素里。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.frame_to_be_available_and_switch_to_it((By.ID,'frame_id')))

高级

自定义条件等待 JavaScript 执行

等待 JavaScript 执行结果返回预期值。

from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout=wait_time).until(lambda driver: driver.execute_script('return document.readyState') == 'complete')

更改代码检查条件的频率

例:设置每隔 2 秒检查一次条件,总超时为 15 秒,直到页面加载完成。

from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout=15, poll_frequency=2).until(lambda d: d.execute_script("return document.readyState") == "complete")

指定应自动处理哪些异常

例:在等待期间自动忽略 NoSuchElementException 异常,直到找到特定元素或超时。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import NoSuchElementExceptionWebDriverWait(driver, timeout=15, ignored_exceptions=[NoSuchElementException]).until(lambda d: d.find_element(By.ID, "element_id"))

更改总超时长度

例:设置最大等待时间为 15 秒,直到找到特定元素。

from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout=15).until(lambda d: d.find_element(By.ID, "element_id"))

自定义超时消息

例:如果页面未在 10 秒内加载完成,捕获 TimeoutException 并打印自定义超时消息。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import TimeoutExceptiontry:WebDriverWait(driver, timeout=15).until(lambda d: d.execute_script("return document.readyState") == "complete")
except TimeoutException:print("页面加载超时,请检查网络连接。")

http://www.mrgr.cn/news/37975.html

相关文章:

  • PMA TB40-1 限温器Temperature limiter TB 40-1 手测
  • LeetCode从入门到超凡(四)深入浅出理解贪心算法
  • 优化|基于深度学习的不动点算子优化的热启动方法
  • 【hot100-java】【柱状图中最大的矩形】
  • MindSearch 部署到Github Codespace 和 Hugging Face Space
  • 一文带你读懂分库分表,分片,Sharding的许多概念
  • Iterm2配置主题和Oh-My-Zsh
  • 【2米/8米光学卫星】
  • OMRON欧姆龙E5GN温控器手测
  • Rust 语言开发 ESP32C3 并在 Wokwi 电子模拟器上运行(esp-hal 非标准库、LCD1602、I2C)
  • Pandas常用数据总览,样本抽检函数
  • 【1米C-SAR卫星】
  • 《C++开源贡献:提升职业竞争力的新途径》
  • 论文阅读 | HiDDeN网络架构
  • Springboot综合练习
  • MySQL知识点复习 - 常用的日志类型
  • AI绘画相似风格的作品
  • 【python进阶攻略6】装饰器2
  • c++开发之编译curl(windows版本)
  • matlab r2024a、matlab R2024b保姆级安装教程