首页 > 其他分享 >Selenium 等待

Selenium 等待

时间:2024-03-26 18:45:09浏览次数:23  
标签:__ webdriver Selenium driver import 等待 selenium

等待

  在测试中,添加等待是为了避免页面为渲染完成时操作导致错误

  等待分为三种:

  强制等待

  隐式等待

  显式等待

类型

使用方法

原理

适用场景

直接等待

time.sleep()

强制线程休眠

调试代码,临时添加

隐式等待

driver.implicitly_wait()

在时间范围内,轮询查找元素

找不到元素问题,无法解决交互问题

显式等待

WebDriverWait(实例,最长时间,轮询时间).until(结束条件)

设定特定的等待条件,轮询操作

特定条件下的等待问题,如点击等交互行为

隐式等待

  在元素可以找到,但交互错误的情况下不适用隐式等待。造成原因为加载过程中先加载html,css和js后加载,导致点击时交互未加载。

from  selenium import webdriver
import time
from selenium.webdriver.common.by import By

def implicitly_method():
    driver = webdriver.Edge()
    url = 'https://www.cnblogs.com/'
    driver.get(url)
    driver.implicitly_wait(2)
    driver.find_element(By.LINK_TEXT,"Oracle与MySQL的差异和对比").click()
    time.sleep(3)

if __name__ == '__main__':
    implicitly_method()

显式等待

from  selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def implicitly_method():
    driver = webdriver.Edge()
    url = 'https://www.cnblogs.com/'
    driver.get(url)
    WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.LINK_TEXT, "Oracle与MySQL的差异和对比")))
    driver.find_element(By.LINK_TEXT,"Oracle与MySQL的差异和对比").click()
    time.sleep(3)

if __name__ == '__main__':
    implicitly_method()

标签:__,webdriver,Selenium,driver,import,等待,selenium
From: https://www.cnblogs.com/qmm-1000/p/18097331

相关文章

  • selenium下载安装
    Selenium简介官网:https://www.selenium.dev/用于web浏览器测试的工具支持的浏览器包括IE、Firefox、Safari、Chrome、Edge等使用简单,可使用Java、Python编写脚本三个工具构成:WebDriver、IDE、GridPython安装SeleniumpipinstallseleniumDriver......
  • 11.测试教程-自动化测试selenium-3
    文章目录1.unittest框架解析2.批量执行脚本2.1构建测试套件2.2用例的执行顺序2.3忽略用例执行3.unittest断言4.HTML报告生成5.异常捕捉与错误截图6.数据驱动大家好,我是晓星航。今天为大家带来的是自动化测试selenium第三节相关的讲解!......
  • 【旅游景点项目日记 | 第二篇】基于Selenium爬取携程网景点详细数据
    文章目录3.基于Selenium爬取携程网景点详细数据3.1前提环境3.2思路3.3代码详讲3.3.1查询指定城市的所有景点3.3.2获取详细景点的访问路径3.3.3获取景点的详细信息3.4数据库设计3.5全部代码3.6效果图3.基于Selenium爬取携程网景点详细数据3.1前提环境确保安装pytho......
  • 使用selenium轻松实现元素拖拽
    前言在进行Web自动化测试或实现用户交互功能时,模拟元素的拖拽操作是一项常见的需求。通过Selenium,一种流行的Web自动化测试工具,我们可以轻松地实现这一功能,使得测试和用户交互更加真实和高效。元素拖拽功能的重要性在许多Web应用程序中,用户可以通过拖拽操作来调整页面布局、拖......
  • 使用Selenium模拟鼠标滚动操作的技巧
    前言在进行Web自动化测试或数据抓取时,模拟用户操作是至关重要的。其中之一就是模拟鼠标滚动操作,这在许多情况下都是必需的。使用Selenium,一种流行的Web自动化测试工具,可以轻松实现这一功能。模拟鼠标滚动的重要性网页内容可能会因为需要用户滚动才能加载而延迟显示,或者是在滚......
  • 通过selenium获取性能日志中的response的body
    selenium==4.14.0以下的就不支持以下设置方法参见:详见fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.chrome.optionsimportOptionsimporttimeimportjson#设置ChromeWebDriver的路径chrome_dr......
  • 等待线程完成
     如果不等待线程,就必须保证线程结束之前,可访问的数据得有效性。 这种情况很可能发生在线程还没结束,函数已经退出的时候,这时线程函数还持有函数局部变量的指针或引用。 structfunc{int&i;func(int&i_):i(i_){}voidoperator()(){fo......
  • 特殊情况下的等待
     当倾向于在无异常的情况下使用join()时,需要在异常处理过程中调用join(),从而避免生命周期的问题。 structfunc;//定义在清单2.1中voidf(){intsome_local_state=0;funcmy_func(some_local_state);std::threadt(my_func);try{do_s......
  • 内核睡眠机制和等待队列
    内核睡眠机制:进程通过睡眠机制释放处理器,使其能够处理其他线程。处理器睡眠的原因可能在于感知数据可用性,或等待资源释放内核调度器管理要运行的任务列表,这被称为运行队列。睡眠进程不再被调度,因为已将它们从运行队列中移除了。除非改变状态(唤醒),否则睡眠进程将永远不会被执行。......
  • selenium(6)窗口,弹窗,以及iframe的操作
    1.current_window_handle  :可以获取当前窗口的句柄2.window_handles:可以获取所有窗口的句柄3.switch_to.window(handle): 可以切换到指定的窗口,其中handle是窗口的句柄。4.close() :关闭当前窗口。5.switch_to.alert():切换到浏览器弹出框同时可以使用driver.switch_to.al......