建设网站证,南宁小程序开发网站建设公司,新鸿儒网站,手机网站开发技术文末附有精心准备的WebUI自动化测试30道面试题链接~ 一、引言
A. 引入WebUI自动化测试的重要性和挑战
Web应用程序的快速发展和普及使得Web用户界面#xff08;WebUI#xff09;自动化测试变得异常重要。随着Web应用程序的复杂性和功能需求的增加#xff0c;传统的手动测试… 文末附有精心准备的WebUI自动化测试30道面试题链接~ 一、引言
A. 引入WebUI自动化测试的重要性和挑战
Web应用程序的快速发展和普及使得Web用户界面WebUI自动化测试变得异常重要。随着Web应用程序的复杂性和功能需求的增加传统的手动测试方法已经无法满足快速和可靠的测试需求。自动化测试通过使用脚本或工具来模拟用户在Web应用程序中的操作能够提高测试效率、减少人为错误、节省时间和资源。
然而WebUI自动化测试也带来了一些挑战。首先Web应用程序的不断更新和修改可能导致测试脚本的失效。因此自动化测试需要保持与应用程序同步进行持续的维护和更新。其次Web应用程序的兼容性要求不同的浏览器和操作系统可能导致测试结果的差异需要进行跨平台和跨浏览器的测试。此外WebUI自动化测试还需要处理异步加载、动态元素、验证码等复杂情况需要使用各种技术和工具来解决这些问题。
B. 引入Python作为实现自动化测试的编程语言
Python是一种简单易学、功能强大的编程语言因其优雅的语法和丰富的库支持而受到广泛的欢迎。Python在自动化测试领域也得到了广泛的应用并成为了一个流行的选择。
首先Python具有清晰的语法结构和简洁的语法易于学习和理解。它的语法风格强调代码的可读性和简洁性使得编写和维护自动化测试脚本变得更加容易。此外Python还支持面向对象编程可以提供更具扩展性和可重用性的测试代码。
其次Python拥有丰富的库和工具支持为自动化测试提供了强大的功能。例如Selenium是一个常用的Web自动化测试工具而Python通过Selenium提供的WebDriver库可以实现对Web页面进行模拟操作。此外还有诸如Pytest、Robot Framework等优秀的测试框架和工具可以帮助开发人员更加高效地进行自动化测试。
另外Python具有广泛的社区支持和丰富的文档资源。在遇到问题时开发人员可以通过查询官方文档、搜索引擎或向社区提问来寻找解决方案。这种社区的互助精神和资源共享为Python的自动化测试提供了保障。
综上所述Python作为实现自动化测试的编程语言具有简洁的语法、丰富的库和工具支持以及强大的社区生态系统能够有效应对WebUI自动化测试的挑战并提供高效、可靠的测试解决方案。
二、Python与WebUI自动化测试的奇妙结合
A. 简介Python的优势以及在测试领域的应用
Python是一门高级的、解释型的编程语言具有以下优势
简洁而清晰的语法Python的语法设计非常简洁代码易于阅读和理解。相比其他编程语言Python的语法结构更加优雅能够提高开发人员的编码效率。强大的库和工具支持Python拥有广泛的第三方库和工具包括在测试领域广泛应用的Selenium、Pytest、Robot Framework等。这些库和工具提供了丰富的功能和接口方便开发人员编写和执行自动化测试脚本。跨平台性Python可以在多个操作系统上运行包括Windows、Linux和Mac OS等。这使得开发人员可以在不同的操作系统上进行WebUI自动化测试无需考虑平台的限制。扩展性和可重用性Python是一种面向对象的编程语言支持模块化的开发方式。这意味着开发人员可以将测试逻辑封装成可重用的模块提高代码的可维护性和可扩展性。社区支持和文档资源Python拥有庞大的开发者社区提供了丰富的文档和教程资源。开发人员在遇到问题时可以通过查询文档或向社区寻求帮助加速问题解决的过程。
在测试领域Python被广泛应用于自动化测试的各个环节包括自动化测试脚本的编写、测试框架的开发、测试结果的分析和报告的生成等。Python通过多种库和工具提供了对不同层次和类型的测试的支持如WebUI自动化测试、接口测试、性能测试等。Python的简洁性、可读性和丰富的库支持使得开发人员能够快速构建、执行和维护自动化测试脚本从而提高测试效率和质量。
B. 为什么Python适合WebUI自动化测试
Python之所以适合WebUI自动化测试主要基于以下几个方面的考虑
Selenium库支持Selenium是一个广泛应用于Web自动化测试的工具而Python提供了Selenium的WebDriver库使得开发人员能够使用Python编写测试脚本并通过模拟用户在Web页面上的操作来进行自动化测试。简洁的语法和可读性Python语言具有简洁而清晰的语法易于学习和理解。Python的代码可读性高使得开发人员能够快速编写和维护WebUI自动化测试脚本降低出错的几率。丰富的第三方库支持Python拥有众多的第三方库和工具为WebUI自动化测试提供了丰富的功能和接口。例如BeautifulSoup库可以解析和提取HTML页面的内容Requests库可以发送HTTP请求并获取响应等。这些库的使用能够扩展测试的能力使得测试脚本更加灵活和强大。跨平台支持Python具有跨平台的特性可以在多个操作系统上运行。这使得WebUI自动化测试可以在不同的操作系统上进行无需关注平台的差异。大规模社区支持Python拥有庞大的开发者社区社区成员积极参与并提供相关支持。开发者可以通过社区找到解决方案、交流经验和分享最佳实践从而更好地开展WebUI自动化测试工作。
C. Python的相关工具和库介绍
1.SeleniumSelenium是一个用于Web应用程序测试的自动化工具。它支持多种浏览器并提供了用于模拟用户在Web页面上的各种操作如点击、输入、选择等的方法和函数。在Python中可以使用Selenium的WebDriver库来编写自动化测试脚本。以下是一个使用Selenium进行WebUI自动化测试的示例代码
from selenium import webdriver# 创建Chrome浏览器实例
driver webdriver.Chrome()# 打开网页
driver.get(https://www.example.com)# 查找并操作页面元素
element driver.find_element_by_id(username)
element.send_keys(John Doe)# 关闭浏览器实例
driver.quit()2.PytestPytest是一个简单而强大的测试框架用于编写和执行Python测试脚本。它提供了丰富的断言方法、测试运行器和插件系统使得测试代码的编写和执行更加简单和高效。以下是一个使用Pytest编写的简单测试用例的示例代码
import pytestdef test_addition():assert 2 2 4def test_subtraction():assert 5 - 3 23.Robot FrameworkRobot Framework是一个通用的自动化测试框架支持关键字驱动的测试设计和执行。它提供了易于理解的关键字语法容易上手和维护。Robot Framework通过Selenium库提供对WebUI自动化测试的支持同时还包括其他的测试库和插件。以下是一个使用Robot Framework进行WebUI自动化测试的示例代码
*** Settings ***
Library SeleniumLibrary*** Test Cases ***
Verify Login FunctionalityOpen Browser https://www.example.com chromeInput Text idusername John DoeInput Text idpassword password123Click Button idlogin-buttonPage Should Contain Welcome, John DoeClose Browser4.BeautifulSoupBeautifulSoup是一个Python库用于从HTML或XML文档中提取数据。它能够帮助开发人员解析网页内容、查找特定元素和提取相关数据。以下是一个使用BeautifulSoup解析HTML页面的示例代码
from bs4 import BeautifulSoup# 使用BeautifulSoup解析HTML页面
html
htmlbodyh1Welcome to Example.com/h1pThis is an example paragraph./pa hrefhttps://www.example.comGo to Example.com/a/body
/html
soup BeautifulSoup(html, html.parser)# 查找特定元素
title soup.h1.text
paragraph soup.p.text
link soup.a[href]print(title) # 输出Welcome to Example.com
print(paragraph) # 输出This is an example paragraph.
print(link) # 输出https://www.example.com综上所述Python提供了丰富的工具和库使得WebUI自动化测试变得更加简单、灵活和高效。通过使用Selenium、Pytest、Robot Framework和BeautifulSoup等库开发人员能够轻松编写和执行自动化测试脚本并获取所需的测试结果和数据。同时Python的跨平台性、可读性和扩展性也为WebUI自动化测试提供了强大的支持和优势。
三、准备舞台搭建WebUI自动化测试环境
A. 安装Python和相关开发工具
1. 安装Python首先需要从官方网站https://www.python.org下载Python的最新版本并按照安装向导进行安装。
2. 安装pippip是Python的包管理器使用它可以方便地安装和管理Python库。在安装Python的过程中一般会自动安装pip。可以通过运行pip --version命令来验证pip是否已经安装成功。
3. 安装集成开发环境IDE可以选择安装图形化的IDE如PyCharm、Visual Studio Code等以提供更好的开发环境和调试功能。这些IDE通常都提供了对Python的语法高亮、代码补全、调试等功能。
B. 配置和安装必要的WebUI自动化测试框架和库
1. 安装Selenium可以通过运行pip install selenium命令来安装Selenium库。Selenium库提供了对WebUI自动化测试的支持可以模拟用户在浏览器中的操作。
2. 安装Web浏览器驱动程序Selenium需要与Web浏览器进行交互因此需要安装与所用浏览器相对应的浏览器驱动程序。例如如果使用Chrome浏览器可以下载Chrome驱动程序并将其添加到系统的路径中。
3. 安装Pytest可以通过运行pip install pytest命令来安装Pytest库。Pytest是一个常用的测试框架提供了丰富的断言方法和测试运行器方便编写和执行自动化测试脚本。
4. 安装Robot Framework可以通过运行pip install robotframework命令来安装Robot Framework库。Robot Framework是一个通用的自动化测试框架支持关键字驱动的测试设计和执行以及对Selenium库的集成。
C. 集成测试环境的准备工作
1. 配置浏览器驱动将下载的浏览器驱动程序解压并将可执行文件添加到系统的路径中以便Selenium可以找到并启动相应的浏览器。
2. 配置测试项目结构可以根据项目需求在本地创建一个测试项目并建立相应的目录结构。通常包括存放测试脚本的目录、存放测试数据的目录、存放页面对象的目录等。
3. 编写测试脚本使用所选的编程语言如Python编写测试脚本。可以根据具体的测试需求使用Selenium或其他相关库来编写测试代码。
4. 运行测试使用所选的测试框架如Pytest、Robot Framework来运行测试脚本。可以使用命令行工具或集成开发环境IDE来执行测试并查看测试结果和报告。
通过以上步骤就可以完成WebUI自动化测试环境的配置和搭建为后续的测试工作做好准备。在实际项目中还可能需要其他的配置和安装工作具体根据项目需求和技术栈来决定。
四、巫师的工具掌握基本的WebUI自动化测试技巧
A. 元素定位与操作
在WebUI自动化测试中元素定位与操作是非常重要的一项技巧。通过定位到页面上的元素我们可以对其进行各种操作如点击、输入文本、获取文本等。
常见的元素定位方式包括 ID定位 element driver.find_element_by_id(element_id)Name定位 element driver.find_element_by_name(element_name)CSS选择器定位 element driver.find_element_by_css_selector(css_selector)XPath定位 element driver.find_element_by_xpath(xpath_expression)通过定位到元素后我们可以进行各种操作比如点击、输入等。以下是一些示例
点击元素
element.click()输入文本
element.send_keys(text)获取元素文本
text element.text
B. 表单填充与提交
在Web应用中表单是用户输入数据的重要方式。在自动化测试中我们需要填充表单并模拟用户提交操作。
假设有一个登录表单包含用户名和密码两个输入框以及一个提交按钮。
填充表单
username_input driver.find_element_by_id(username)
password_input driver.find_element_by_id(password)username_input.send_keys(myusername)
password_input.send_keys(mypassword)提交表单
submit_button driver.find_element_by_xpath(//input[typesubmit])
submit_button.click()
C. 验证结果与断言
在自动化测试中我们需要验证测试结果是否符合预期。常用的验证方式是断言即判断某个条件是否为真如果条件不为真则测试失败。
比如我们可以使用断言来判断某个元素的文本是否正确
element driver.find_element_by_id(element_id)
assert element.text expected_text如果断言失败将会抛出断言错误测试框架会将此测试用例标记为失败。
D. 异常处理与日志记录
在自动化测试中异常处理和日志记录是非常重要的技巧。通过合理地处理异常和记录日志可以提高测试的可靠性和可维护性。
异常处理可以捕获和处理一些意外情况比如元素找不到、页面加载超时等。可以使用try…except语句来捕获异常并进行处理。
try:element driver.find_element_by_id(element_id)
except NoSuchElementException:# 元素找不到的处理逻辑print(Element not found.)日志记录可以帮助我们了解测试执行过程中的详细信息比如打印出定位到的元素、填充的数据等。可以使用Python的logging模块进行日志记录。
import logging# 配置日志记录
logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s)# 日志记录示例
logging.info(Element found.)
E. 并行执行与批量测试
并行执行和批量测试是提高自动化测试效率的重要手段。
并行执行指同时执行多个测试用例以减少测试执行时间。可以使用测试框架或工具来实现并行执行比如使用pytest框架的并发插件。
import pytestpytest.mark.parametrize(browser, [chrome, firefox])
def test_search(browser):# 根据browser参数执行不同的浏览器pass上述示例中测试用例test_search会同时执行两次一次在Chrome浏览器中执行一次在Firefox浏览器中执行。
批量测试指批量执行多个测试用例。可以将测试用例设计为可批量执行的形式使用循环或数据驱动的方式执行多次比如使用pytest框架的参数化功能。例如
import pytestpytest.mark.parametrize(username, password, [(user1, pass1), (user2, pass2)])
def test_login(username, password):# 执行登录逻辑使用username和password进行登录验证pass上述示例中测试用例test_login会分别以user1和pass1的组合以及user2和pass2的组合进行两次执行。
通过使用并行执行和批量测试技巧可以提高自动化测试的效率和覆盖范围。
五、魔法的技巧优化WebUI自动化测试的实现
A. 最佳实践编写可维护和可扩展的测试代码
编写可维护和可扩展的测试代码是优化WebUI自动化测试实现的关键。以下是一些最佳实践
1.使用页面对象模式Page Object Pattern将每个页面抽象为一个对象封装页面的元素定位和操作方法。这样可以提高代码的可读性和可维护性并降低测试代码与页面结构的耦合度。
示例代码
class LoginPage:def __init__(self, driver):self.driver driverdef enter_username(self, username):username_input self.driver.find_element_by_id(username)username_input.send_keys(username)def enter_password(self, password):password_input self.driver.find_element_by_id(password)password_input.send_keys(password)def click_login_button(self):submit_button self.driver.find_element_by_css_selector(.login-button)submit_button.click()2.使用显式等待在等待页面元素出现或满足特定条件之前使用显式等待来避免不必要的等待时间和超时错误。
示例代码
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECelement WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, element_id))
)3.利用配置文件将常用的配置信息如URL、浏览器驱动路径等存储在配置文件中并在测试代码中进行读取。这样可以提高灵活性和易于维护。
示例代码使用configparser库
import configparserconfig configparser.ConfigParser()
config.read(config.ini)url config.get(General, url)
B. 数据驱动测试使用数据文件和数据驱动库
数据驱动测试是一种测试方法其中测试数据从外部数据源如Excel、CSV、数据库等加载以确保覆盖多种数据情况的测试。
示例使用CSV文件来作为测试数据源
import csvdef load_test_data(file_path):test_data []with open(file_path, r) as file:csv_reader csv.reader(file)next(csv_reader) # 跳过标题行for row in csv_reader:test_data.append(row)return test_data# 加载测试数据
data load_test_data(testdata.csv)# 执行测试用例
for row in data:username row[0]password row[1]# 执行测试逻辑
C. 集成CI/CD流程与持续集成/持续交付平台集成
将WebUI自动化测试与持续集成/持续交付CI/CD平台集成可以使测试自动运行并获得实时的测试报告和结果。
常见的CI/CD平台有Jenkins、GitLab CI、Travis CI等。通过配置构建脚本或管道将自动化测试融入到整个开发流程中。
D. 跨平台和跨浏览器测试应对多样性
为了应对不同操作系统和浏览器的多样性可以考虑以下方法 使用平台无关的浏览器驱动选择支持多种浏览器的驱动如Selenium WebDriver。通过配置不同的驱动程序您可以跨多种浏览器运行自动化测试。 使用云测试平台如Sauce Labs、BrowserStack等云测试平台可以提供跨平台和跨浏览器的测试环境方便进行测试的多样性覆盖。 基于Docker的容器化测试使用Docker容器可以创建和管理轻量级的测试环境可以快速配置和运行不同操作系统和浏览器的自动化测试。
通过应用这些优化技巧可以提高WebUI自动化测试的效率和可靠性使其更好地满足多样化的测试需求。 最佳实践编写可维护和可扩展的测试代码是关键。使用适当的命名规范、代码结构和注释使测试代码易于理解和维护。遵循设计原则如单一职责原则和开放封闭原则。 数据驱动测试使用数据文件和数据驱动库可以轻松地执行多种测试数据组合从而更全面地覆盖测试场景。可以使用Excel、CSV、JSON等文件格式或使用数据驱动库如ddt库进行数据驱动测试。 集成CI/CD流程将自动化测试与持续集成/持续交付CI/CD平台集成可以自动执行测试并及时获取测试结果和报告。通过与代码版本控制系统的集成可以在每次代码提交后自动触发测试流程。 跨平台和跨浏览器测试确保自动化测试在不同操作系统和浏览器上的可靠运行。通过并行执行测试同时覆盖多个操作系统和浏览器的测试。使用平台无关的浏览器驱动如Selenium WebDriver以便实现跨浏览器的自动化测试。
综上所述通过采用最佳实践、数据驱动测试、集成CI/CD流程和跨平台/跨浏览器测试等优化技巧可以提高WebUI自动化测试的效率、可维护性和覆盖范围从而更好地支持软件开发周期中的质量保障工作。
六、展现魅力演示一些WebUI自动化测试的奇迹场景
A. 登录与用户认证测试
登录与用户认证是Web应用程序中常见且关键的功能之一。自动化测试可以验证登录流程、用户身份认证和权限控制等方面的功能。
场景示例
输入有效的用户名和密码验证成功登录后是否能正确显示用户信息。输入错误的用户名或密码验证登录失败后是否能正确提示错误信息。在登录状态下尝试访问受限页面验证是否能正确进行权限控制。
B. 表单交互与验证测试
表单交互与验证是Web应用程序中的常见操作之一。自动化测试可以模拟用户输入、点击按钮和验证表单的输入和输出是否符合预期。
场景示例
输入有效数据提交表单后验证数据是否正确保存。输入无效数据验证表单是否能正确检测并提示错误。测试表单字段的校验规则如必填字段、长度限制和数据格式等。
C. 多页面流程测试
多页面流程测试是验证跨页面交互和数据传递的重要测试场景。自动化测试可以模拟用户在不同页面之间的操作和数据交互。
场景示例
在首页进行搜索操作然后在搜索结果页面点击链接并验证跳转到正确的详细页面。在一个页面填写表单数据然后跳转到下一个页面进行进一步操作并验证数据是否正确传递。
D. 页面响应与性能测试
页面响应和性能是用户体验的关键指标。自动化测试可以评估页面加载速度、响应时间和性能指标以确保Web应用程序的高效性和稳定性。
场景示例
测试页面加载时间验证页面在合理的时间范围内是否加载完成。测试并发用户访问场景评估系统在高负载情况下的性能表现。模拟慢速网络环境验证页面在网络延迟较高的情况下的表现。
以上场景仅展示了WebUI自动化测试的一些奇迹场景在实际应用中还可以根据具体的业务需求和项目特点进行更深入的测试场景设计和优化。
七、走近终极进阶WebUI自动化测试技术与框架
A. 页面对象模式提高可维护性
页面对象模式是一种设计模式用于将每个页面或组件抽象为一个对象封装页面的元素和操作方法。通过页面对象模式可以提高测试代码的可读性、可维护性和重用性。
页面对象模式的主要优点包括
抽象页面元素和操作隐藏实现细节使测试代码更简洁。减少测试代码与页面结构的耦合使更改页面结构时减少对测试代码的影响。提供一致性的接口方便测试用例编写和维护。
B. 数据库和API集成测试
Web应用程序通常会与数据库和API进行交互因此在进行WebUI自动化测试时也需要考虑与数据库和API进行集成测试。
数据库集成测试可以验证Web应用程序与数据库之间的数据交互是否正确比如检查数据的插入、更新和删除操作。
API集成测试可以验证Web应用程序与后端API之间的交互是否正常比如验证请求和响应的数据格式、参数传递和返回结果的正确性。
通过与数据库和API集成测试可以更全面地验证Web应用程序的功能和数据一致性。
C. 前后端一体化测试技术
前后端一体化测试是一种测试方法用于验证前端和后端的协同工作以及整体系统的正确性。
前后端一体化测试可以模拟真实的用户操作场景通过自动化测试工具和框架同时进行WebUI的操作和后端API的验证。
这种一体化的测试方法可以更全面地覆盖前端和后端的交互并提供更准确的测试结果以确保整个系统的功能和性能符合预期。
D. 高级测试框架和工具介绍
在WebUI自动化测试中还有许多高级测试框架和工具可以帮助改善测试效率和质量。
一些常用的高级测试框架和工具包括
Selenium Grid用于在不同浏览器和平台上并行运行测试提高测试速度和覆盖范围。TestNG一个灵活且功能强大的测试框架支持并行执行、测试依赖、数据驱动和测试报告等功能。Cucumber一个行为驱动开发BDD框架支持用自然语言编写测试用例和生成可执行的测试代码。JUnit一个常用的Java单元测试框架可用于编写和执行WebUI自动化测试。Apache JMeter用于性能测试的开源工具可模拟并发用户和测量系统的性能指标。
通过使用这些高级测试框架和工具可以提高自动化测试的效率、可维护性和覆盖范围提供更准确的测试结果从而更好地支持WebUI的自动化测试。
八、结语
A. 回顾本文涵盖的关键点
在本文中我们涵盖了优化WebUI自动化测试实现的关键技巧和最佳实践。我们讨论了编写可维护和可扩展的测试代码、使用数据驱动测试、集成CI/CD流程以及跨平台和跨浏览器测试等方面的方法。我们还介绍了一些奇迹场景如登录与用户认证测试、表单交互与验证测试、多页面流程测试和页面响应与性能测试。
B. 展望WebUI自动化测试的未来
WebUI自动化测试在软件开发领域扮演着重要的角色并且随着技术的不断发展它将继续进步和演变。未来我们可以预见以下趋势和发展方向
1. AI和机器学习在自动化测试中的应用AI和机器学习技术将进一步应用于自动化测试帮助自动化工具更准确地识别和处理复杂的WebUI界面和交互。
2. 测试可视化和记录回放可视化工具和记录回放技术将提供更直观和可理解的测试过程展示帮助测试人员更好地理解和调试测试用例。
3. 快速、可靠的测试执行平台更高效、稳定和可扩展的测试执行平台将推动自动化测试的发展以满足不断增长的测试需求和更快的发布周期。
C. 鼓励读者继续深入学习和实践
WebUI自动化测试是一个广阔而持续演进的领域。为了更好地掌握和应用这些技术鼓励读者继续深入学习和实践。建议的学习和实践路径包括
1. 学习编程语言和基础知识掌握至少一门编程语言如Python、Java、JavaScript等以及相关的测试框架和工具。
2. 深入理解Web技术学习HTML、CSS、JavaScript等Web技术的基础知识了解Web页面结构和交互原理。
3. 掌握自动化测试工具和框架熟悉常用的自动化测试工具和框架如Selenium、TestNG、Cucumber等并通过实际项目实践来提升技能。
4. 学习测试设计和策略了解测试设计和策略的基本概念学习如何编写高质量的测试用例如边界值测试、等价类划分等。
5. 深入了解测试管理和报告学习测试管理和报告的基本原则和方法了解如何组织和执行测试计划并生成清晰、详尽的测试报告。
6. 持续学习并参与社区保持对自动化测试领域的持续学习和研究关注新的技术和趋势。参加测试社区的活动与其他测试人员进行交流和分享经验。
通过不断学习和实践您将能够不断提升自己在WebUI自动化测试领域的能力并为实际项目的质量保障工作作出更大的贡献。祝您在WebUI自动化测试的旅程中取得成功
准备WebUI自动化测试面试这30个问题你必须掌握一_什么时候才能变强的博客-CSDN博客https://blog.csdn.net/qq_17496235/article/details/131817117 准备WebUI自动化测试面试这30个问题你必须掌握二_什么时候才能变强的博客-CSDN博客https://blog.csdn.net/qq_17496235/article/details/131817453