Selenium WebDriver - 网络元素

news2024/11/26 18:49:12

本文翻译整理自:https://www.selenium.dev/documentation/webdriver/elements/


文章目录

    • 一、文件上传
    • 二、定位策略
      • 1、传统定位器
      • 2、创建定位器
      • 3、类名
      • 4、CSS选择器
      • 5、id
      • 6、NAME
      • 7、链接文本
      • 8、部分链接文本
      • 9、标签名称
      • 10、xpath
      • 11、相对定位器
        • 它是如何工作的
        • 可用相对定位器
          • 以上
          • 下面
          • 左边的
          • 右边
          • 临近
        • 链式相对定位器
    • 三、查找Web元素
      • 1、第一匹配元素
        • 评估整个DOM
        • 评估DOM的子集
        • 优化定位器
      • 2、所有匹配元素
        • 获取元素
      • 3、从元素中查找元素
      • 4、获取活动元素
    • 四、与Web元素交互
      • 1、附加验证
      • 2、点击
      • 3、发送钥匙
      • 4、清除
      • 5、提交
    • 五、有关网络元素的信息
      • 1、显示
      • 2、已启用
      • 3、被选中
      • 4、Tag Name
      • 5、Size and Position
      • 6、获取CSS值
      • 7、文本内容
      • 8、获取属性或属性


识别和使用DOM中的元素对象。

大多数人的大多数Selenium代码都涉及使用Web元素。


一、文件上传

因为Selenium无法与文件上传对话框交互,所以它提供了一种方法 在不打开对话框的情况下上传文件。
如果元素是file类型的input元素, 您可以使用send key方法将完整路径发送到将要上传的文件。

file_input = driver.find_element(By.CSS_SELECTOR, "input[type='file']")
file_input.send_keys(upload_file)
driver.find_element(By.ID, "file-submit").click()

二、定位策略

标识DOM中一个或多个特定元素的方法。

定位器是一种识别页面上元素的方法。
它是传递给 查找元素方法。

查看我们的鼓励测试实践以获取有关 定位器,包括何时和何时使用 为什么要将定位器与查找方法分开声明。


1、传统定位器

Selenium在WebDriver中支持以下8种传统定位策略:

定位器描述
类名定位其类名包含搜索值的元素(不允许使用复合类名)
css选择器定位与CSS选择器
id匹配的元素定位其ID属性与搜索值匹配的元素
name定位其NAME属性与搜索值匹配的元素
链接文本定位可见文本与搜索值匹配的锚元素
部分链接文本定位可见文本包含搜索值的锚元素。
如果多个元素匹配,则只选择第一个。
标签名称定位标签名称与搜索值匹配的元素
xpath定位与XPath表达式匹配的元素

2、创建定位器

要使用Selenium处理Web元素,我们需要首先在网页上定位它。
Selenium为我们提供了上述方法,我们可以使用这些方法在页面上定位元素。
为了理解和创建定位器,我们将使用以下超文本标记语言片段。

<html>
<body>
<style>
.information {
  background-color: white;
  color: black;
  padding: 10px;
}
</style>
<h2>Contact Selenium</h2>

<form action="/action_page.php">
  <input type="radio" name="gender" value="m" />Male &nbsp;
  <input type="radio" name="gender" value="f" />Female <br>
  <br>
  <label for="fname">First name:</label><br>
  <input class="information" type="text" id="fname" name="fname" value="Jane"><br><br>
  <label for="lname">Last name:</label><br>
  <input class="information" type="text" id="lname" name="lname" value="Doe"><br><br>
  <label for="newsletter">Newsletter:</label>
  <input type="checkbox" name="newsletter" value="1" /><br><br>
  <input type="submit" value="Submit">
</form> 

<p>To know more about Selenium, visit the official page 
<a href ="www.selenium.dev">Selenium Official Page</a> 
</p>

</body>
</html>

3、类名

超文本标记语言页面web元素可以有属性类。
我们可以在上面显示的超文本标记语言片段中看到一个示例。
我们可以使用Selenium中可用的类名定位器来识别这些元素。

driver = webdriver.Chrome()
driver.find_element(By.CLASS_NAME, "information")

4、CSS选择器

CSS是用于设置超文本标记语言页面样式的语言。
我们可以使用css选择器定位器策略来识别页面上的元素。
如果元素有一个id,我们将定位器创建为css=#id。
否则我们遵循的格式是css=[属性=值]。
让我们看看上面超文本标记语言片段的示例。
我们将使用css为名字文本框创建定位器。

driver = webdriver.Chrome()
driver.find_element(By.CSS_SELECTOR, "#fname")

5、id

我们可以使用网页中元素的ID属性来定位它。
通常,网页上每个元素的ID属性应该是唯一的。
我们将使用它来识别姓氏字段。

driver = webdriver.Chrome()
driver.find_element(By.ID, "lname")

6、NAME

我们可以使用网页中元素的NAME属性来定位它。
通常,NAME属性对于网页上的每个元素都应该是唯一的。
我们将使用它来识别时事通讯复选框。

driver = webdriver.Chrome()
driver.find_element(By.NAME, "newsletter")

7、链接文本

如果我们要定位的元素是一个链接,我们可以使用链接文本定位器在网页上识别它。
链接文本是链接显示的文本。
在共享的超文本标记语言片段中,我们有一个可用的链接,让我们看看我们将如何定位它。

driver = webdriver.Chrome()
driver.find_element(By.LINK_TEXT, "Selenium Official Page")

8、部分链接文本

如果我们要定位的元素是一个链接,我们可以使用部分链接文本定位器在网页上识别它。
链接文本是链接显示的文本。
我们可以将部分文本作为值传递。
在共享的超文本标记语言片段中,我们有一个可用的链接,让我们看看如何定位它。

driver = webdriver.Chrome()
driver.find_element(By.PARTIAL_LINK_TEXT, "Official Page")

9、标签名称

我们可以使用超文本标记语言TAG本身作为定位器来识别页面上的web元素。
从上面分享的超文本标记语言片段中,让我们使用其html标记“a”来识别链接。

driver = webdriver.Chrome()
driver.find_element(By.TAG_NAME, "a")

10、xpath

超文本标记语言文档可以被视为XML文档,然后我们可以使用xpath,它将是到达感兴趣元素的路径来定位元素。
XPath可以是绝对xpath,它是从文档的根目录创建的。
示例- /html/form/input[1]。
这将返回男性单选按钮。
或者xpath可以是相对的。
示例-//输入[@name=‘fname’]。
这将返回第一个名称输入框。
让我们使用xpath为女性单选按钮创建定位器。

driver = webdriver.Chrome()
driver.find_element(By.XPATH, "//input[@value='f']")

11、相对定位器

Selenium 4引入了相对定位器(以前称为友好定位器)。
当不容易为所需元素构建定位器,但很容易在空间上描述元素与具有易于构建的定位器的元素之间的关系时,这些定位器很有帮助。


它是如何工作的

Selenium使用JavaScript函数 getBoundingClientRect() 确定页面上元素的大小和位置,并可以使用此信息来定位相邻元素。

相对定位器方法可以作为原点的参数,要么是先前定位的元素引用,或者另一个定位器。
在这些示例中,我们将只使用定位器,但是您可以将最终方法中的定位器与元素对象交换,它的工作方式相同。

让我们考虑下面的示例来理解相对定位器。

Relative Locators


可用相对定位器

以上

如果由于某种原因电子邮件文本字段元素不容易识别,但密码文本字段元素是,我们可以使用它是“密码元素”上方的“输入”元素这一事实来定位文本字段元素。

email_locator = locate_with(By.TAG_NAME, "input").above({By.ID: "password"})

下面

如果密码文本字段元素由于某种原因不容易识别,但电子邮件文本字段元素是,我们可以使用它是电子邮件元素“下方”的“输入”元素这一事实来定位文本字段元素。

password_locator = locate_with(By.TAG_NAME, "input").below({By.ID: "email"})

左边的

如果由于某种原因,取消按钮不容易识别,但提交按钮元素是,我们可以使用它是提交元素“左侧”的“按钮”元素这一事实来定位取消按钮元素。

cancel_locator = locate_with(By.TAG_NAME, "button").to_left_of({By.ID: "submit"})

右边

如果提交按钮由于某种原因不容易识别,但取消按钮元素是,我们可以使用它是取消元素“右侧”的“按钮”元素这一事实来定位提交按钮元素。

submit_locator = locate_with(By.TAG_NAME, "button").to_right_of({By.ID: "cancel"})

临近

如果相对定位不明显,或者它根据窗口大小而变化,您可以使用近方法 确定距离提供的定位器最多50px的元素。
一个很好的用例是使用没有易于构建的定位器的表单元素, 但其关联的输入标签元素。

email_locator = locate_with(By.TAG_NAME, "input").near({By.ID: "lbl-email"})

链式相对定位器

如果需要,您还可以使用链式定位器。
有时,元素最容易被识别为既在一个元素的上方/下方,又在另一个元素的右侧/左侧。

submit_locator = locate_with(By.TAG_NAME, "button").below({By.ID: "email"}).to_right_of({By.ID: "cancel"})

三、查找Web元素

根据提供的定位器值定位元素。

使用Selenium最基本的方面之一是获取要使用的元素引用。
Selenium提供了许多内置定位器策略来唯一标识元素。
有许多方法可以在非常高级的场景中使用定位器。
为了本留档的目的, 让我们考虑这个超文本标记语言片段:

<ol id="vegetables">
 <li class="potatoes"><li class="onions"><li class="tomatoes"><span>Tomato is a Vegetable</span></ol>
<ul id="fruits">
  <li class="bananas"><li class="apples"><li class="tomatoes"><span>Tomato is a Fruit</span></ul>

1、第一匹配元素

许多定位器将匹配页面上的多个元素。
单数查找元素方法将返回对在给定上下文中找到的第一个元素的引用。


评估整个DOM

当在驱动实例上调用find元素方法时,它会返回对DOM中与提供的定位器匹配的第一个元素的引用。
该值可以存储并用于未来的元素操作。
在我们上面的示例超文本标记语言中,有两个元素的类名为“西红柿”,因此此方法将返回“蔬菜”列表中的元素。

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")

评估DOM的子集

与其在整个DOM中找到唯一的定位器,不如将搜索范围缩小到另一个已定位元素的范围。
在上面的示例中,有两个元素的类名为“西红柿”,获取第二个元素的引用更具挑战性。

一种解决方案是定位具有唯一属性的元素,该属性是所需元素的祖先,而不是不需要元素的祖先,然后在该对象上调用find元素:

fruits = driver.find_element(By.ID, "fruits")
fruit = fruits.find_element(By.CLASS_NAME,"tomatoes")

WebDriverWebElementShadowRoot类都实现了一个SearchContext接口,即 考虑基于角色的接口
基于角色的接口允许您确定特定的 驱动程序实现支持给定的功能。
这些接口定义明确,并尝试 坚持责任单一。


优化定位器

嵌套查找可能不是最有效的定位策略,因为它需要向浏览器发出两个单独的命令。

为了稍微提高性能,我们可以使用CSS或XPath在单个命令中查找此元素。
请参阅定位器策略建议在我们的 鼓励测试实践部分。

对于此示例,我们将使用CSS选择器:

fruit = driver.find_element(By.CSS_SELECTOR,"#fruits .tomatoes")

2、所有匹配元素

有几个用例需要获取与定位器匹配的所有元素的引用,而不仅仅是第一个。
复数查找元素方法返回元素引用的集合。
如果没有匹配项,则返回一个空列表。
在这种情况下,对所有水果和蔬菜列表项的引用将在集合中返回。

plants = driver.find_elements(By.TAG_NAME, "li")

获取元素

通常,您获得了一个元素集合,但希望使用特定元素,这意味着您需要遍历该集合并确定您想要的元素。

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

driver = webdriver.Firefox()

# Navigate to Url
driver.get("https://www.example.com")

# Get all the elements available with tag name 'p'
elements = driver.find_elements(By.TAG_NAME, 'p')

for e in elements:
    print(e.text)

3、从元素中查找元素

它用于在父元素的上下文中查找匹配的子WebElements列表。
为此,父WebElement与“findElements”链接以访问子元素

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

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# Get element with tag name 'div'
element = driver.find_element(By.TAG_NAME, 'div')

# Get all the elements available with tag name 'p'
elements = element.find_elements(By.TAG_NAME, 'p')
for e in elements:
    print(e.text)

4、获取活动元素

它用于跟踪(或)查找在当前浏览上下文中具有焦点的DOM元素。

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

driver = webdriver.Chrome()
driver.get("https://www.google.com")
driver.find_element(By.CSS_SELECTOR, '[name="q"]').send_keys("webElement")

# Get attribute of current active element
attr = driver.switch_to.active_element.get_attribute("title")
print(attr)

最后修改2023年9月12日:更新所有需要将代码移动到示例中的地方(b82db1dd56e)


四、与Web元素交互

用于操作表单控件的高级指令集。

一个元素上只有5个基本命令可以执行:

  • 点击(适用于任何元素)
  • 发送键(仅适用于文本字段和内容可编辑元素)
  • 清除(仅适用于文本字段和内容可编辑元素)
  • 提交(仅适用于表单元素)
  • select(请参阅选择列表元素)

1、附加验证

这些方法旨在密切模仿用户的体验,因此, 与Actions API不同,它尝试执行两件事 在尝试指定的操作之前。

  1. 如果它确定元素在视口之外,它 将元素滚动到视图中,特别是 它将元素的底部与视口的底部对齐。
  2. 它确保元素是可交互的 在采取行动之前。
    这可能意味着滚动不成功,或者 元素不会以其他方式显示。
    确定一个元素是否显示在页面上太难了 直接在webdrive规范中定义, 因此,Selenium发送了一个带有JavaScript原子的执行命令,该命令检查是否会保留 不显示的元素。
    如果它确定一个元素不在视口中,则不显示,不 keyboard-interactable,或不 pointer-interactable, 它返回一个元素不可交互错误。

2、点击

执行元素单击命令时 该元素的中心。
如果元素的中心由于某种原因被遮挡, Selenium将返回一个元素点击拦截错误。

# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Click on the element 
driver.find_element(By.NAME, "color_input").click()

3、发送钥匙

该元素发送键命令 将提供的键键入到可编辑元素中。
通常,这意味着元素是具有text类型的表单的输入元素或元素 带有content-editable属性。
如果它不可编辑, 返回一个无效的元素状态错误。

这是 WebDriver支持的可能击键。

# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Clear field to empty it from any previous data
driver.find_element(By.NAME, "email_input").clear()

# Enter Text
driver.find_element(By.NAME, "email_input").send_keys("admin@localhost.dev" )

4、清除

该元素清除命令重置元素的内容。
这要求元素可编辑, 并且可以重新安置。
通常, 这意味着元素是具有text类型的表单的输入元素或元素 带有content-editable属性。
如果不满足这些条件, 返回一个无效的元素状态错误。

# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Clear field to empty it from any previous data
driver.find_element(By.NAME, "email_input").clear() 

5、提交

在Selenium 4中,这不再使用单独的端点和通过执行脚本实现的功能。
因此,建议不要使用此方法,而是单击适用的表单提交按钮。


五、有关网络元素的信息

你可以了解一个元素。

您可以查询有关特定元素的许多详细信息。


1、显示

此方法用于检查连接的元素是否 显示在网页上。
返回一个Boolean, 如果连接的元素显示在当前 浏览上下文else返回false。

此功能在中提到,但未定义 w3c规范由于 不可能涵盖所有潜在条件。
因此,Selenium不能指望驱动程序实施 此功能直接,现在依赖于 直接执行大型JavaScript函数。
这个函数对一个元素进行了许多近似值 树中的性质和关系返回一个值。

# Navigate to the url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Get boolean value for is element display
is_email_visible = driver.find_element(By.NAME, "email_input").is_displayed()

2、已启用

此方法用于检查网页上连接的元素是启用还是禁用。
返回一个布尔值,如果在当前浏览上下文中启用了连接的元素,则返回True,否则返回false。

# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Returns true if element is enabled else returns false
value = driver.find_element(By.NAME, 'button_input').is_enabled()

3、被选中

此方法确定引用的元素是否被选中。
此方法广泛用于复选框、单选按钮、输入元素和选项元素。

Returns a boolean value, True if referenced element is selected in the current browsing context else returns false.

# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Returns true if element is checked else returns false
value = driver.find_element(By.NAME, "checkbox_input").is_selected()

Copy


4、Tag Name

It is used to fetch the TagName of the referenced Element which has the focus in the current browsing context.

# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Returns TagName of the element
attr = driver.find_element(By.NAME, "email_input").tag_name
  

Copy


5、Size and Position

用于获取引用元素的尺寸和坐标。

获取的数据体包含以下详细信息:

  • 元素左上角的X轴位置
  • 元素左上角的y轴位置
  • 元素的高度
  • 元素的宽度
# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Returns height, width, x and y coordinates referenced element
res = driver.find_element(By.NAME, "range_input").rect
  

6、获取CSS值

检索当前浏览上下文中元素的指定计算样式属性的值。

# Navigate to Url
driver.get('https://www.selenium.dev/selenium/web/colorPage.html')

# Retrieves the computed style property 'color' of linktext
cssValue = driver.find_element(By.ID, "namedColor").value_of_css_property('background-color') 

7、文本内容

检索指定元素的呈现文本。

# Navigate to url
driver.get("https://www.selenium.dev/selenium/web/linked_image.html")

# Retrieves the text of the element
text = driver.find_element(By.ID, "justanotherlink").text

8、获取属性或属性

获取与DOM属性关联的运行时值。
它返回与元素的DOM属性或属性关联的数据。

# Navigate to the url
driver.get("https://www.selenium.dev/selenium/web/inputs.html")

# Identify the email text box
email_txt = driver.find_element(By.NAME, "email_input")

# Fetch the value property associated with the textbox
value_info = email_txt.get_attribute("value")

2024-06-17(一)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java中Object和json相互转换的方式

1.org中jackson转换json,springboot中内置jackson ObjectMapper onew ObjectMapper(); List<>listnew ArrayList(); String jonso.writeAsValueString(list); 2.alibaba中fastjson转换成json GetMapping("/test")public TbUser testHttpClient(){String url…

Python 函数注解,给函数贴上小标签

目录 什么是函数注解? 为什么使用函数注解? 如何编写函数注解? 实战演练 与类型提示(Type Hints)的关系 类型安全的运算器 什么是函数注解? 函数注解(Function Annotations)是Python 3中新增的一个特性,它允许为函数的参数和返回值指定类型。 这些注解不会改变…

大学食堂管理系统

摘 要 随着信息技术的飞速发展和高校规模的不断扩大&#xff0c;大学食堂作为高校日常运营的重要组成部分&#xff0c;其管理效率和服务质量直接影响到师生的日常生活和学习。传统的食堂管理方式&#xff0c;如手工记录、纸质菜单、人工结算等&#xff0c;不仅效率低下&#x…

FFmpeg编译4

CPUx86-64 TOOLCHAIN N D K / t o o l c h a i n s / x 8 6 6 4 − 4.9 / p r e b u i l t / l i n u x − x 8 6 6 4 S Y S R O O T NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64 SYSROOT NDK/toolchains/x866​4−4.9/prebuilt/linux−x866​4SYSROOTNDK/platforms/and…

2024-06-23 操作系统实验5——模拟页式存储管理

文章目录 一、实验目的二、实验内容三、实验过程四、结果测试五、实验总结和说明 补录与分享本科实验&#xff0c;以示纪念。 一、实验目的 通过编写和调试请求页式存储管理的模拟程序以加深对请求页式存储管理方案的理解。 二、实验内容 页面淘汰算法可采用FIFO置换算法&a…

React+TS前台项目实战(十五)-- 全局常用组件Table封装

文章目录 前言Table组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 在这篇文章中&#xff0c;我们将对本系列项目中常用的表格组件Table进行自定义封装&#xff0c;以提高性能并适应项目需求。后期也可进行修改和扩展&#xff0c;以满足项目的需求。 Table组…

Windows 11 安装hp 1020 plus 打印机驱动 (Ubuntu 20.04.3 LTS 部署cups局域网共享打印服务器)

1 win11 下载HP laserjet 1020 plus驱动,可以官网下载哦 链接下载 2 手动添加hp laserjet 1020驱动: 控制面板-->查看设备和打印机-->打印机和扫描仪-->添加设备-->我需要的打印机不在列表中-->通过手动添加-->按名称选择共享打印机 如果找不到&#xff0…

论文《Tree Decomposed Graph Neural Network》笔记

【TDGNN】本文提出了一种树分解方法来解决不同层邻域之间的特征平滑问题&#xff0c;增加了网络层配置的灵活性。通过图扩散过程表征了多跳依赖性&#xff08;multi-hop dependency&#xff09;&#xff0c;构建了TDGNN模型&#xff0c;该模型可以灵活地结合大感受场的信息&…

简易部署的设备日志采集工具

永久免费: Gitee下载 最新版本 使用说明: Moretl 企业级采集文件工具 优势: A. 开箱即用. 解压直接运行.不需额外安装. B. 批管理设备. 设备配置均在后台管理. C. 无人值守 客户端自启动,自更新. D. 稳定安全. 架构简单,内存占用小,通过授权访问.

OPENCV中0x00007FFE5F35F39C发生异常

原因&#xff1a;读取图片时已经为灰度图像&#xff0c;又进行了一次灰度处理cvtColor 解决方法&#xff1a;如上图所示&#xff0c;将cv::imread的第二个参数改为cv::IMREAD_COLOR&#xff1b;或者保留cv::IMREAD_GRAYSCALE&#xff0c;删去后面的cv::cvtColor

高通安卓12-OTA 升级

1.OTA介绍 OTA 英文全称是 Over-the-Air Technology&#xff0c;即空间下载技术的意思。 OTA 升级是 Android 系统提供的标准软件升级方式。它功能强大&#xff0c;可以无损失升级系统&#xff0c;主 要通过网络[例如 WIFI、3G]自动下载 OTA 升级包、自动升级&#xff0c;但…

仿饿了么加入购物车旋转控件 - 自带闪转腾挪动画 的按钮

, mWidth - mCircleWidth, mHeight - mCircleWidth); canvas.drawRoundRect(rectF, mHintBgRoundValue, mHintBgRoundValue, mHintPaint); //前景文字 mHintPaint.setColor(mHintFgColor); // 计算Baseline绘制的起点X轴坐标 int baseX (int) (mWidth / 2 - mHintPaint.m…

新闻管理与推荐系统Python+Django+协同过滤推荐算法+管理系统

一、介绍 新闻管理与推荐系统。本系统使用Python作为主要开发语言开发的一个新闻管理与推荐的网站平台。 网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求&#xff0c;并将用户的相关行为数据保存在数据库中。通过Ajax技术实现前后…

mayavi pyqt 实例

目录 安装&#xff1a; 示例代码&#xff1a; 生成3d检测框&#xff1a; 安装&#xff1a; pip install pyqt5 mayavi traits traitsui 示例代码&#xff1a; import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton from …

区块链中nonce是什么,什么作用

目录 区块链中nonce是什么,什么作用 区块链中nonce是什么,什么作用 Nonce在以太坊中是一个用于确保交易顺序性和唯一性的重要参数。以下是对Nonce的详细解释: 定义 Nonce是一个scalar值,它等于从该地址发送的交易数量,或在具有关联代码的账户的情况下,由该账户创建的合…

【Flutter 专题】112 图解自定义 ACEPieWidget 饼状图 (一)

类别选项球&#xff1b;切割绘制饼状图&#xff1b;饼状图中绘制文字&#xff1b; 1. 类别选项球 对于两侧不同颜色类别选项卡&#xff0c;仅需要简单设置一下 Container 的 decoration 装饰器即可&#xff0c;只是方便用户查看饼状图分类而已&#xff1b; return Container…

不用写一行代码,deepseek结合腾讯云语音识别来批量转录Mp3音频

首先&#xff0c;打开window系统中的cmd命令行工具&#xff0c;或者powershell&#xff0c;安装腾讯云tencentcloud的Python库 pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python 然后&#xff0c;开通腾讯云的对象存储COS服务&…

【小沐学AI】Python实现语音识别(Whisper-Web)

文章目录 1、简介2、下载2.1 openai-whisper2.2 whisper-web 结语 1、简介 https://openai.com/index/whisper/ Whisper 是一种自动语音识别 &#xff08;ASR&#xff09; 系统&#xff0c;经过 680,000 小时的多语言和多任务监督数据的训练&#xff0c;从网络上收集。我们表…

【大数据 复习】第8章 Hadoop架构再探讨

一、概念 1.Hadoop1.0的核心组件&#xff08;仅指MapReduce和HDFS&#xff0c;不包括Hadoop生态系统内的Pig、Hive、HBase等其他组件&#xff09;&#xff0c;主要存在以下不足&#xff1a; &#xff08;1&#xff09;抽象层次低&#xff0c;需人工编码 &#xff08;2&#xf…

Docker常用命令与实战示例

docker 1. 安装2. 常用命令3. 存储4. 网络5. redis主从复制示例6. wordpress示例7. DockerFile8. 一键安装超多中间件&#xff08;compose&#xff09; 1. 安装 以centOS系统为例 # 移除旧版本docker sudo yum remove docker \docker-client \docker-client-latest \docker-c…