Selenium探险家:驾驭Web自动化的秘籍与实战

Hi,我是阿佑,今天将带大伙们学会如何使用Selenium进行高效的网站测试,如何配置Selenium Grid实现分布式测试,以及如何预测和拥抱自动化测试的未来!

文章目录

  • 1. 引言
    • 2. 背景介绍
      • 2.1 Selenium概览
      • 2.2 Python与Selenium的结合
    • 3. Selenium基础操作
      • 3.1 WebDriver初探
      • 3.2 页面元素定位
      • 3.3 交互操作
    • 4. 高级功能与实践
      • 4.1 页面等待策略
      • 4.2 异常处理
      • 4.3 多窗口与标签页操作
      • 4.4 执行JavaScript
    • 5. Selenium WebDriver实战案例
      • 5.1 网站登录自动化
      • 5.2 网页表单自动化填写
      • 5.3 数据抓取与验证
    • 6. Selenium Grid与分布式测试
      • 6.1 Selenium Grid简介
      • 6.2 配置与使用Grid
    • 7. 结论
      • Selenium在自动化测试中的应用价值总结
      • 未来发展趋势预测
    • 参考文献
      • 官方文档
      • 推荐书籍
      • 在线课程
      • 社区与论坛支持
      • 开源项目与工具

1. 引言

在当今这个数字化飞速发展的时代,我们每个人都像是在互联网的海洋中航行的水手。而Web自动化测试,就是那艘能够带我们安全、高效地穿越波涛汹涌的海洋的船只。它不仅能够保证我们的网站和应用在各种环境下都能正常运行,还能让我们的测试工作从繁琐的重复劳动中解放出来,让我们有更多的时间去探索未知的领域。

好了,让我们来聊聊今天的主角——Selenium。Selenium,这个名字听起来就像是古希腊神话中的月神,它在自动化测试的世界里也扮演着守护者的角色。自从2004年诞生以来,Selenium就以其强大的功能和灵活性,成为了自动化测试领域的一颗璀璨明星。

Selenium不仅仅是一个工具,它更像是一位经验丰富的船长,带领着我们驶向成功的彼岸。它能够控制几乎所有的浏览器,无论是Chrome、Firefox还是Safari,都能在Selenium的指挥下,执行各种复杂的任务。

那么,Selenium和Python的结合,就像是船长找到了他最得力的助手。Python以其简洁的语法和强大的库支持,成为了Selenium的最佳拍档。使用Python来编写Selenium脚本,就像是用最优雅的语言来指挥一场精彩的交响乐。

接下来,我们将一起踏上这段旅程,从Selenium的基础知识开始,一步步探索它的高级功能,并通过实战案例来展示它的强大能力。在这段旅程中,你将学会如何使用Selenium来自动化测试你的网站,让它变得更加健壮和可靠。

但在这之前,让我们先来搭建起我们的船只——安装Selenium库并配置好环境。这就像是为即将起航的船只装上帆和舵,确保我们的旅程能够顺利进行。

准备好了吗?让我们扬帆起航,开始我们的Selenium之旅吧!
在这里插入图片描述

2. 背景介绍

2.1 Selenium概览

想象一下,你是一位探险家,站在历史的长河岸边,回望着那些勇敢的先驱们。Selenium,这位自动化测试的先驱,它的足迹可以追溯到2004年。那时候,它以一个简单的工具的身份诞生,目的是为了自动化浏览器测试。随着时间的流逝,Selenium不断进化,从一个简单的工具成长为一个强大的框架,它的故事就像是一部精彩的冒险小说。

Selenium的历史充满了变革和创新。它从最初的单一功能,发展到现在能够支持多种浏览器和平台,这一路上的演变,就像是探险家在未知领域中不断发现新大陆。而与其他自动化测试工具相比,Selenium就像是一把瑞士军刀,多功能且强大,无论是简单的页面测试还是复杂的多浏览器测试,它都能轻松应对。

2.2 Python与Selenium的结合

现在,让我们把镜头转向Python,这位Selenium的得力助手。Python以其简洁的语法和强大的库支持,成为了Selenium的最佳搭档。在自动化测试的世界里,Python就像是一把锋利的剑,而Selenium则是那把剑的剑鞘,两者结合,无坚不摧。

Python语言在自动化测试中的优势不言而喻。它简单易学,代码可读性强,这使得即使是编程新手也能快速上手。而对于那些经验丰富的开发者来说,Python的丰富库和框架,能够让他们更加高效地编写测试脚本。

安装Selenium库及环境配置的过程,就像是为即将起航的船只准备必要的物资。你只需要通过Python的包管理器pip,简单地输入一行命令pip install selenium,Selenium的宝藏就会呈现在你面前。接下来,根据你想要控制的浏览器,下载相应的WebDriver,你的Selenium之旅就可以正式起航了。

随着我们的船只逐渐准备就绪,我们即将驶向更广阔的海域。在下一章,我们将深入探索Selenium的基础操作,学习如何驾驭这艘船,让它在Web自动化测试的海洋中乘风破浪。准备好了吗?让我们继续我们的探险吧!

3. Selenium基础操作

3.1 WebDriver初探

想象一下,你手中有一把神奇的钥匙,可以打开任何浏览器的大门。这把钥匙就是WebDriver。它不仅仅是一个简单的驱动程序,更像是一个万能的遥控器,能够控制浏览器的一举一动。

启动浏览器实例的过程,就像是启动一辆赛车。你只需要一行简单的代码,比如:

from selenium import webdriver

# 创建一个Chrome浏览器实例
driver = webdriver.Chrome()

这行代码就像是按下启动按钮,Chrome浏览器就会像一辆赛车一样,轰鸣着启动起来。接下来,你可以用它来访问任何网站,就像驾驶赛车在赛道上飞驰。

3.2 页面元素定位

在浏览器的海洋中,每个网页都是一个岛屿,而页面元素就是岛屿上的宝藏。要找到这些宝藏,你需要一张藏宝图,这张图就是元素定位的方法。

  • ID定位:就像是使用GPS定位,直接找到宝藏的精确位置。
  • Name定位:如果你知道宝藏的名字,那么找到它就简单多了。
  • XPath定位:这是一种更复杂的定位方法,就像是根据地图上的坐标来寻找宝藏。
  • CSS Selector定位:这就像是根据宝藏的外观特征来寻找它。

例如,如果你想在页面上找到一个按钮并点击它,你可以使用XPath定位:

button = driver.find_element_by_xpath("//button[@id='submit']")
button.click()

这就像是你对赛车说:“嘿,看到那个按钮了吗?给我冲过去,按下它!”

3.3 交互操作

现在,我们已经找到了宝藏,接下来就是与宝藏互动的时候了。在Selenium中,你可以模拟点击、输入文本、选择下拉菜单等各种操作。

  • 模拟点击:就像是你用手指轻轻触碰宝藏,看看它是否会打开一个秘密通道。
  • 输入文本:这就像是在宝藏上刻下你的名字,让它记住你来过这里。
  • 选择下拉菜单:这就像是在宝藏箱中挑选你最想要的宝贝。

举个例子,如果你想在一个搜索框中输入文字并搜索:

search_box = driver.find_element_by_name("q")
search_box.send_keys("Selenium WebDriver")
search_box.submit()

这就像是你对赛车说:“嘿,带我去搜索‘Selenium WebDriver’这个宝藏!”

随着我们的探险逐渐深入,我们已经学会了如何驾驭Selenium这艘船,让它在Web自动化测试的海洋中航行。在下一章,我们将探索Selenium的高级功能,让我们的探险之旅更加精彩。准备好了吗?让我们继续前进,探索更多未知的宝藏吧!

4. 高级功能与实践

4.1 页面等待策略

在自动化测试的世界里,时间就是金钱,效率就是生命。但是,有时候我们的页面就像是一位害羞的姑娘,需要一点时间来准备她的美丽。这就是为什么我们需要页面等待策略。

  • 显式等待:这就像是你告诉Selenium:“嘿,伙计,给我看着点,等到这位姑娘准备好了再告诉我。”你可以设置一个等待时间,比如:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)  # 等待时间设置为10秒
element = wait.until(EC.visibility_of_element_located((By.ID, "myElement")))
  • 隐式等待:这更像是一种默契,你告诉Selenium:“在接下来的操作中,如果页面上的元素还没准备好,就耐心等等。”你可以设置一个全局的隐式等待时间:
driver.implicitly_wait(5)  # 设置隐式等待时间为5秒

4.2 异常处理

在自动化测试的旅途中,难免会遇到一些坑坑洼洼,这时候就需要我们有一套应对策略。

  • 常见异常类型:比如NoSuchElementException,当你试图找到一个不存在的元素时就会遇到它。
  • 自定义异常处理机制:这就像是你的背包里的工具,帮助你在遇到问题时快速解决。

处理异常的一个例子:

try:
    element = driver.find_element_by_id("nonexistent")
except NoSuchElementException:
    print("哎呀,这个元素不存在,我们换个地方找找吧!")

4.3 多窗口与标签页操作

在Web的世界里,多窗口和标签页就像是我们的分身术,让我们能够同时处理多个任务。

  • 切换窗口:当你打开一个新窗口时,Selenium会告诉你一个新的窗口句柄,你可以通过它来切换:
new_window = driver.execute_script("window.open('');")
driver.switch_to.window(new_window)
  • 切换标签页:当你打开一个新标签页时,Selenium同样会提供给你一个标签页的引用,你可以通过它来切换:
driver.execute_script("window.open('http://new-tab.com');")
driver.switch_to.window(driver.window_handles[1])  # 切换到新的标签页

4.4 执行JavaScript

在某些情况下,我们需要直接与页面的JavaScript进行对话,这时候就需要用到执行JavaScript的功能。

  • 调用JS代码:这就像是你直接对页面说:“嘿,页面,给我做这个。”
  • JS执行与页面交互:这可以让你更细致地控制页面的行为。

一个执行JavaScript的例子:

driver.execute_script("arguments[0].click();", element)

这就像是你对赛车说:“嘿,赛车,看到那个元素了吗?给我点一下它!”

随着我们一步步深入Selenium的高级功能,我们的探险之旅变得越来越有趣。在下一章,我们将通过实战案例来展示Selenium的强大能力,让我们的探险之旅更加精彩。准备好了吗?让我们继续前进,探索更多未知的宝藏吧!
在这里插入图片描述

5. Selenium WebDriver实战案例

5.1 网站登录自动化

想象一下,你是一位侦探,需要潜入一个网站来获取重要信息。但是,这个网站有一个警卫——登录表单。别担心,Selenium会帮你轻松搞定它。

首先,我们需要分析登录流程,就像侦探分析犯罪现场一样。登录通常包括输入用户名和密码,然后点击登录按钮。接下来,我们将编写登录脚本,就像侦探制定行动计划一样。

from selenium import webdriver

# 启动浏览器
driver = webdriver.Chrome()

# 打开登录页面
driver.get("http://example.com/login")

# 输入用户名和密码
username = driver.find_element_by_name("username")
password = driver.find_element_by_name("password")
username.send_keys("你的用户名")
password.send_keys("你的密码")

# 提交登录表单
login_button = driver.find_element_by_id("loginButton")
login_button.click()

# 等待页面跳转
driver.implicitly_wait(10)

5.2 网页表单自动化填写

现在,让我们来到一个在线购物网站,你看到了一款心仪的商品,但是填写表单的过程繁琐又耗时。别担心,Selenium会帮你自动化这个过程。

首先,我们需要识别表单中的元素,比如商品名称、数量、颜色等。然后,我们将编写脚本来自动填写这些信息。

# 假设我们已经打开了商品页面

# 选择商品
product = driver.find_element_by_css_selector("#productList .product")
product.click()

# 填写数量
quantity = driver.find_element_by_id("quantity")
quantity.clear()
quantity.send_keys("2")

# 选择颜色
color = driver.find_element_by_id("color")
color.send_keys("红色")

# 提交表单
submit_button = driver.find_element_by_id("submit")
submit_button.click()

5.3 数据抓取与验证

最后,假设你是一位质量控制专家,需要验证网站上的数据是否准确。Selenium可以帮助你抓取数据并进行验证。

比如,你需要验证网站上的价格是否与数据库中的价格一致。你可以使用Selenium来抓取网页上的价格,并与数据库中的价格进行比较。

# 假设我们已经打开了商品详情页面

# 抓取网页上的价格
price_on_page = driver.find_element_by_id("price").text

# 假设我们从数据库中获取的价格存储在变量database_price中
if price_on_page == database_price:
    print("价格验证通过!")
else:
    print("价格不一致,需要调查!")

通过这些实战案例,我们可以看到Selenium的强大之处。它不仅可以帮助我们自动化日常的Web操作,还可以在数据抓取和验证方面发挥重要作用。

在下一章,我们将探索Selenium Grid和分布式测试,这将使我们的自动化测试能力更上一层楼。准备好了吗?让我们继续前进,探索更多Selenium的奥秘吧!

6. Selenium Grid与分布式测试

6.1 Selenium Grid简介

想象一下,你是一位指挥官,站在指挥台上,面前是一排排的电脑屏幕,每个屏幕都显示着不同的浏览器和操作系统。这不是科幻电影里的场景,这是Selenium Grid带给你的超能力。

Selenium Grid就像是一个强大的网络,连接着分布在世界各地的机器。这些机器就像你的士兵,听从你的命令,执行各种测试任务。通过Grid,你可以实现跨浏览器和跨平台的自动化测试,就像是拥有了一支多才多艺的军队,能够应对各种复杂的情况。

6.2 配置与使用Grid

配置Selenium Grid的过程就像是建立你的军队基地。首先,你需要一个Hub,这是你的指挥中心,所有的消息和指令都从这里发出。

from selenium import webdriver

# 设置Hub的URL
hub_url = "http://your-hub-url:4444/wd/hub"

# 创建一个使用Grid的WebDriver实例
driver = webdriver.Remote(command_executor=hub_url, desired_capabilities={'browserName': 'chrome'})

接下来,你需要配置Node,这是你的士兵,它们将执行实际的测试任务。每个Node都需要注册到Hub上,这样Hub才能知道它们的存在。

# 假设你的Node运行在另一台机器上,运行以下命令来注册Node
java -jar selenium-server-standalone-3.x.x.jar -role node -hub http://your-hub-url:4444/grid/register -browser "browserName=chrome,maxInstances=5"

现在,你的军队已经准备就绪,你可以开始执行分布式测试了。这就像是指挥你的士兵去执行任务。

# 执行测试任务
driver.get("http://example.com")

# ... 进行各种测试操作 ...

# 测试完成后,关闭WebDriver实例
driver.quit()

在这个过程中,你的测试任务会在不同的机器上并行执行,大大提高了测试的效率。

通过Selenium Grid和分布式测试,我们可以让自动化测试变得更加强大和灵活。这就像是拥有了一支无敌的军队,无论面对多么复杂的测试任务,都能够轻松应对。

在下一章,我们将总结Selenium在自动化测试中的应用价值,并预测未来的发展趋势。准备好了吗?让我们继续前进,探索Selenium的更多可能吧!

7. 结论

Selenium在自动化测试中的应用价值总结

随着我们Selenium之旅的结束,我们站在了一个新的起点上,回望过去,我们不禁感慨万千。Selenium,这位自动化测试界的超级英雄,以其超凡的力量和智慧,帮助我们解决了一个又一个难题。

  • 效率提升:Selenium让我们的测试工作变得自动化,不再需要手动重复那些繁琐的操作,就像是拥有了一台永不停歇的机器,24小时不间断地为我们工作。
  • 跨浏览器兼容性:Selenium让我们能够轻松地在不同的浏览器和操作系统上进行测试,确保我们的网站和应用能够适应各种环境。
  • 节省成本:通过自动化测试,我们减少了人力成本和时间成本,将更多的资源投入到产品的创新和优化中。
  • 错误减少:自动化测试减少了人为错误的可能性,提高了测试的准确性和可靠性。

未来发展趋势预测

展望未来,Selenium这位超级英雄将会继续进化,变得更加强大和智能。

  • 云服务集成:随着云计算技术的不断发展,Selenium可能会更加紧密地与云服务集成,让我们能够更加方便地利用云资源进行测试。
  • 人工智能结合:Selenium可能会与人工智能技术结合,实现更加智能的测试策略和自动化流程。
  • 移动设备测试:随着移动设备的普及,Selenium在移动设备测试方面的应用将会得到进一步的扩展和优化。
  • 社区发展:Selenium的社区将会继续壮大,更多的开发者和用户将会参与到Selenium的开发和应用中,共同推动其发展。

随着Selenium的不断发展,我们有理由相信,它将会成为自动化测试领域的一面旗帜,引领我们走向更加高效、智能的未来。

在这段旅程中,我们不仅学会了如何使用Selenium,更重要的是,我们学会了如何思考和解决问题。这将是我们在自动化测试领域不断前进的宝贵财富。

最后,让我们以一颗感恩的心,感谢Selenium这位超级英雄,感谢它为我们的自动化测试工作带来的便利和价值。同时,也感谢每一位在这段旅程中陪伴我们的伙伴,是你们的陪伴让这段旅程变得更加精彩。

准备好了吗?让我们携手Selenium,继续在自动化测试的道路上,勇往直前,探索更多的可能!
在这里插入图片描述

我是阿佑,一个专注于把晦涩的技术讲有趣的中二青年~

参考文献

官方文档

  • Selenium官方文档:这是学习Selenium最直接的资源,详细地介绍了Selenium的各个方面。
    • 链接:Selenium Official Documentation

推荐书籍

  • 《Selenium WebDriver 3 实战宝典》:这本书深入浅出地介绍了Selenium WebDriver 3的使用方法,适合初学者和有经验的开发者。
    • 作者:Luke Leberfinger
    • 出版社:人民邮电出版社
  • 《自动化测试最佳实践:测试人员和敏捷团队的测试自动化指南》:这本书不仅介绍了Selenium,还涵盖了自动化测试的最佳实践。
    • 作者:Doe Rumbaugh
    • 出版社:清华大学出版社

在线课程

  • Udemy上的Selenium课程:Udemy提供了多个关于Selenium的课程,适合不同水平的学习者。
    • 链接:Selenium Courses on Udemy
  • Coursera上的Web自动化测试课程:Coursera上的课程通常由大学教授讲授,内容权威且系统。
    • 链接:Web Automation on Coursera

社区与论坛支持

  • Stack Overflow:一个非常活跃的技术问答社区,你可以在这里找到许多关于Selenium的问题和答案。
    • 链接:Stack Overflow
  • Selenium官方论坛:官方论坛是获取Selenium最新动态和与其他用户交流的好地方。
    • 链接:Selenium Official Forum

开源项目与工具

  • Selenium GitHub仓库:在这里,你可以找到Selenium的源代码,提交bug,或者贡献代码。
    • 链接:Selenium on GitHub
  • WebDriverManager:一个用于管理WebDriver的工具,可以简化WebDriver的下载和管理过程。
    • 链接:WebDriverManager

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/656695.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SwiftUI中EnvironmentObject的使用(多界面共享数据)

SwiftUI的EnvironmentObject是一个强大的工具,它允许你在多个视图之间共享数据(使用一个可观察对象)。当你有一个复杂的视图层次结构,并且需要在没有直接连接的视图之间共享相同的可观察对象时,它特别有用。 我们之前传递数据主要是通过init…

奥枫软件Java要个16K遇到地狱级难度,醉了。。。

我只能说地狱难度,没绝对把握就别去了。我凭借前辈的经验,和当时天时地利人和,六道题答得很不错,但还是没通过。我有备而来都没过,现场写那些应该都是白忙活了。 一面 1,分割一个整数。如123,结…

视图【mysql数据库】

目录 一、视图的创建、查看、修改、删除 二、cascaded、local检查选项 cascaded和local的区别 三、视图的更新 四、视图的作用 一、视图的创建、查看、修改、删除 二、cascaded、local检查选项 上面的几句SQL中,我们虽然给视图插入了id 30的数据,但…

基于 vuestic-ui 实战教程 - 登录篇

1. 简介 登录做为一个系统的门面,也是阻挡外界的一道防线,那在vuestic-ui中如何做登录功能呢。在这里就之间沿用初始版本的Login页面,作为一个演示模板,后续需要改进的读者可以在此篇文章的基础上修改。 2. 登录接口相关api 与 t…

扔掉 MacBook,挑战带OrangePi出差!

背景 由于工作需要,博主经常会到各大企业的自建机房中私有化部署公司的软件产品。 在某些企业自建机房中,有时给到全新的机器,没有基础环境,甚至有的还无法互联网,而且因为近几年CentOS的停止更新,服务器…

go-zero 实战(2)

go-zero 实战(1) 中,使用了go-zero 创建了order 和 user 两个微服务。而order作为grpc的客户端,user 作为grpc的服务端,打通了 order 到 user的调用。接下来,我们在user中,加入mysql组件。确保数…

开源与闭源:AI模型发展的两条路径

目录 前言1 数据隐私保护与用户数据安全1.1 开源大模型的透明性与挑战1.2 闭源大模型的控制与责任 2 商业应用的优劣比较2.1 开源大模型的灵活性与创新2.2 闭源大模型的可靠性与服务质量 3 社区参与与合作的差异3.1 开源大模型的社区驱动与协作3.2 闭源大模型的企业主导与保密性…

四川古力未来科技抖音小店安全靠谱,购物新体验

在数字化浪潮席卷而来的今天,电商行业蓬勃发展,各种线上购物平台如雨后春笋般涌现。其中,抖音小店凭借其独特的短视频直播购物模式,迅速赢得了广大消费者的青睐。而四川古力未来科技抖音小店,更是以其安全靠谱、品质保…

Python OCR 文字检测使用模型:读光-文字检测-DBNet行检测模型-中英-通用领域

介绍 什么是OCR? OCR是“Optical Character Recognition”的缩写,中文意为“光学字符识别”。它是一种技术,可以识别和转换打印在纸张或图像上的文字和字符为机器可处理的格式,如计算机文本文件。通过使用OCR技术,可…

Qt Creator(2)【如何在Qt Creator中创建新工程】

阅读导航 引言一、Qt Creator开始界面介绍二、如何在Qt Creator中创建新工程1. 新建项目2. 选择项目模板3. 选择项目路径4. 选择构建系统5. 填写类信息设置界面6. 选择语言和翻译文件7. 选择Qt套件8. 选择版本控制系统9. 最终效果 三、认识Qt Creator项目内容界面1. 基本界面2.…

基于Vue的神影视频APP

需求说明:使用Vue脚手架进行搭建,页面简洁、精致,和一些常见的电影网站类似,例如支付宝中的“淘票票电影”。在项目中使用页面布局技术(表格,vue.js框架,DIV+CSS或者混合使用)进行页面设计,使网站功能齐全,界面美观大方,有一定的交互性。 功能分析:系统主要分为七…

翻译《The Old New Thing》- What did MakeProcInstance do?

What did MakeProcInstance do? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080207-00/?p23533 Raymond Chen 2008年02月07日 MakeProcInstance 做了什么? MakeProcInstance 宏实际上什么也不做。 #define MakeProcInst…

四川农业大学Java实训项目圆满收官,汇智知了堂引领学子实践创新

近日,四川农业大学与汇智知了堂共同举办的Java实训项目正式迎来了项目汇报阶段。本次实训是汇智知了堂在高等教育领域深化校企合作、推动产教融合的一次重要实践,旨在为广大学子提供一个将理论知识与实际操作相结合的平台。 在实训过程中,汇…

(三)MySQL 索引

欢迎访问 什么是索引? 提高查询效率的一种数据结构,索引是数据的目录 索引的分类 按「数据结构」分类:Btree索引、Hash索引、Full-text索引。按「物理存储」分类:聚簇索引、二级索引。按「字段特性」分类:主键索引…

【Linux学习】进程间通信 (3) —— System V (1)

下面是有关进程通信中 System V 的相关介绍,希望对你有所帮助! 小海编程心语录-CSDN博客 目录 1. System V IPC 1. 消息队列 msg 消息队列的使用方法 1.1 消息队列的创建 1.2 向消息队列发送消息 1.3 从消息队列接收消息 1.4 使用msgctl函数显式地…

拉格朗日插值及牛顿差商方法的实现(Matlab)

一、问题描述 拉格朗日插值及牛顿差商方法的实现。 二、实验目的 掌握拉格朗日插值和牛顿差商方法的原理,能够编写代码实现两种方法;能够分析多项式插值中的误差。 三、实验内容及要求 利用拉格朗日插值及牛顿差商方法估计1980 年的人口,并…

监控员工电脑的软件有哪些,不得不说这几款电脑监控软件太好用了

监控员工电脑的软件在市场上种类繁多,以下是几款备受好评的电脑监控软件,它们各自具有独特的功能和优势,选择前必须了解一下才能做成正确决定。 1.安企神: 这款软件支持7天试用测试,获取测试版请移驾 ↓↓↓ 安企神…

常见的数据分析方法

1.周期性分析法 一个指标的观察时间拉长,看它是否有周期变化规律。周期性分析常见的有两者:自然周期和生命周期。自然周期,指业务指标会随着时间自然变化,如节假日用户/业绩出现下滑、产品销售额随季节变动等;生命周期,譬如“商品生命周期”、“APP生命周期”、“用户生…

【论文阅读】Rank-DETR(NIPS‘23)

paper:https://arxiv.org/abs/2310.08854 code:https://github.com/LeapLabTHU/Rank-DETR

二叉树——基础知识详解

前言: 经过前面的学习,我们接下来要开始二叉树的学习,因二叉树有难度,为了方便讲解以及各位的理解,本节知识会分成不同的小节进行学习,在本阶段只学习初阶的二叉树(堆,二叉数基本知识…