Selenium教程

Selenium Python教程

Selenium with Python Tutorial
在本教程中,我们将学习如何使用Python编程语言运行Selenium测试脚本。
在继续本教程之前,首先,我们将了解一些要点,这些要点将有助于我们实现测试脚本在Python中。
什么是Selenium? 为什么我们使用Selenium进行自动化测试? 什么是Python? Python为什么对自动化测试有用? Selenium with Python 使用Python配置Selenium 在Eclipse中配置PyDev

什么是Selenium?

Selenium是一种开源测试工具,这意味着可以从互联网上下载它而无需花费任何金钱。 Selenium是一种功能测试工具,也与非功能测试工具兼容。
有关Selenium的更多信息,请参见下面的链接: https://www.lidihuo.com/selenium-tutorial

为什么我们使用Selenium进行自动化测试?

Selenium是最受欢迎的自动化测试工具之一。这里的自动化测试是使用诸如 Selenium 之类的自动化工具将任何手动测试用例转换为测试脚本的过程。以下是一些我们为什么偏爱Selenium进行自动化测试的方面:
Selenium测试脚本可以用任何编程语言编写,例如 Java,Python,C#,Ruby,Perl 等。 Selenium测试脚本可以在许多操作系统平台上执行,例如 Windows,Mac,Linux 等。 并且可以在不同的浏览器(如 Google Chrome,Mozilla Firefox,Internet Explorer , Safari 等)上实现测试脚本。 Selenium测试工具可以与其他测试工具(例如 TestNG,Junit )关联,以管理测试用例并生成测试报告。 为实现连续测试,Selenium已与 Maven,Jenkins和Docker 测试工具集成。

什么是Python?

Python支持面向对象编程方法来建立应用程序。它简单易学,并提供了许多高级数据结构。这是一种开源语言。 这是一种高级解释器脚本编程语言。 Python使开发和调试快速进行,因为Python开发中不包含编译步骤。
有关Python语言的更多详细信息,请参见以下链接: https://www.lidihuo.com/Python-tutorial

为什么Python对自动化测试有用?

Python在自动化测试中非常有用,因为它支持多种编程模式。 Python有许多内置测试框架,例如 Pytest和Robot ,涵盖了调试和更快的工作流程。 这是一种解释语言,意味着解释器一次执行一行代码,这使调试变得容易。 Python是跨平台语言;这就是为什么它可以在 Windows,Linux,UNIX和Macintosh等不同平台上运行的原因 可以使用其他编程语言(例如 C,C ++,JAVA 等)轻松实现Python。

使用Python的Selenium

有两种方法可以在Python的帮助下运行Selenium测试脚本:
使用Python配置Selenium 在Eclipse中配置PyDev。
让我们看看如何使用Python编程语言配置Selenium:

使用Python配置Selenium

使用Python配置Selenium的步骤如下:
在Windows上下载并安装Python 在Python中安装Selenium库 下载并安装PyCharm 创建一个新项目并编写Selenium测试脚本 运行并验证测试脚本。

下载并安装适用于Windows的Python

在本节中,我们将了解如何下载和安装适用于Windows的Python平台。
下载Python
要下载适用于Windows平台的最新版本的Python,请参考以下链接: https://www.Python.org/downloads/
单击上面的链接后,将显示最新的发行版列表,我们单击了 Python 3.8.1版本,如下面的屏幕截图所示: Selenium with Python Tutorial Python-3.8.1 版本窗口将出现在屏幕上,然后滚动页面一点并找到 File 部分,然后单击Windows操作系统的基于Windows x86-64基于Web的安装程序链接,如下面的屏幕截图所示: Selenium with Python Tutorial
安装Python
为 Windows-64 bit 下载Python之后,我们就可以安装Python。
要安装Python,请按照下面的过程:
一旦我们双击下载的可执行文件,屏幕上就会出现 Python 3.8.1(64位)设置窗口,其中有两个选项可用于安装Python,哪个是: 立即安装 自定义安装 我们将点击自定义安装,然后选择将Python 3.8添加到路径复选框,如下图所示: Selenium with Python Tutorial 之后,单击自定义安装,可选功能将出现在屏幕上,我们可以根据需要选择和取消选择功能。 然后,点击下一步按钮,继续进行操作,如下图所示: Selenium with Python Tutorial 一次,我们单击了下一步按钮;我们有一个可用的高级选项列表,我们可以在其中根据需要选择选项,并确保已选择为所有用户安装。 我们还可以根据需要通过单击浏览 自定义安装位置。 然后,点击安装按钮,以安装Python,如下面的屏幕截图所示: Selenium with Python Tutorial 单击"安装"按钮后,安装过程即开始,如下面的屏幕截图所示: Selenium with Python Tutorial 安装完成后,我们收到确认消息,提示安装成功,这表示已成功为 Windows 操作系统安装了Python。 然后,点击关闭按钮,以关闭设置窗口,如下面的屏幕截图所示: Selenium with Python Tutorial
此后,我们将检查Python是否已成功安装,以及
因此,为此,我们将打开命令提示符,并以 Python 键入命令,然后按 Enter键,然后它将打开Python解释器外壳,我们可以在其中实现Python程序,如下图所示:
Selenium with Python Tutorial

在Python中安装Selenium库

一旦在操作系统中成功安装Python,我们将安装Selenium库。
为此,我们将在命令提示符下执行以下命令:
Python-m pip install-U Selenium
并且,此命令将成功安装最新的 Selenium软件包,即,将 Selenium-3.141.0 添加到库中,如下图所示:
Selenium with Python Tutorial
执行上述命令后,它将自动创建 Selenium文件夹,如下面的屏幕截图所示,它具有所有Selenium库:
Selenium with Python Tutorial

下载并安装PyCharm

一旦成功将Selenium库安装到Python中,就可以下载PyCharm的Python IDE。
要下载PyCharm,请执行以下过程:
请参阅下面的链接,下载PyCharm https: //www.jetbrains.com/pycharm/download/#section=windows 点击上面的链接后,我们将获得以下窗口,在该窗口中,点击 Windows 部分下的下载按钮。 Selenium with Python Tutorial 然后,双击可执行文件以安装PyCharm,然后会在屏幕上显示 PyCharm Community Edition设置窗口,我们点击下一步 >按钮以继续操作,如下图所示: Selenium with Python Tutorial 在下一步中,我们可以通过单击 Browser (浏览器)按钮,然后单击 Next (下一步)按钮来选择安装位置 。 Selenium with Python Tutorial 下一步,我们提供了一些安装选项,我们可以根据需要选择它们。 然后,点击下一步按钮,如下图所示: Selenium with Python Tutorial 然后,单击安装按钮以安装PyCharm,如下面的屏幕截图所示: Selenium with Python Tutorial 如下面的图片所示,安装过程正在开始。 Selenium with Python Tutorial 然后,单击完成按钮以完成安装过程,如下图所示: Selenium with Python Tutorial

创建一个新项目并编写Selenium测试脚本

成功安装PyCharm之后,我们将打开PyCharm IDE以创建新项目。
在PyCharm中创建新项目
按照以下过程,在PyCharm中创建一个新项目:
首先,双击打开PyCharm,然后单击创建新项目,如下图所示: Selenium with Python Tutorial 此后,我们将提供项目名称为 SeleniumTest ,然后单击 Create 按钮,如下图所示: Selenium with Python Tutorial 单击"创建"按钮后,我们将显示以下窗口: Selenium with Python Tutorial
添加Selenium测试脚本
要在PyCharm中添加Selenium测试脚本,请执行以下过程:
右键单击 SeleniumTest 项目,然后转到 New ,我们可以根据需要在给定列表中添加任何选项。 但是,我们在这里添加了Python文件,为此,我们将添加目录,它可以帮助我们分别管理它们,如下面的屏幕截图所示: Selenium with Python Tutorial 然后提供目录名称,在本例中,我们将其命名为 Demo 然后,按 Enter 键,如下图所示: Selenium with Python Tutorial 创建目录后,我们将右键单击 Demo 目录,然后转到 New ,然后从弹出菜单中选择 Python文件如下图所示的菜单:
演示→新建→Python文件
Selenium with Python Tutorial 而且,我们为python文件提供的名称为 Sample1 。 然后,按 Enter 键,如下图所示: Selenium with Python Tutorial 之后,我们有了IDE,可以在其中创建或编写Selenium测试脚本。
编写Selenium测试脚本
出于测试目的,我们将首先转到 Google主页并从此处搜索 lidihuo 。
我们正在逐步创建示例测试脚本,以使您全面了解如何用Python编程语言编写Selenium测试脚本。
为此,请执行以下步骤:
动作 输入 预期结果
从Selenium中导入WebDriver。 应该导入WebDriver。
打开Goog​​le Chrome浏览器。 应打开Goog​​le Chrome浏览器。
最大化浏览器窗口。 浏览器窗口应最大化。
导航到 Google主页。 https://www.google.com/ 必须显示Google主页。
识别 Google搜索文本框并传递值。 lidihuo 该值应在搜索文本框中输入。
点击 Google搜索按钮。 应点击Google搜索按钮。
关闭浏览器。 浏览器应该关闭。
Step1
第一步,我们将键入以下语句以导入Web驱动程序:
from selenium import webdriver
Selenium with Python Tutorial
Step2
然后,我们将打开Goog​​le Chrome浏览器。
如下面的屏幕截图所示,我们提供了多种类型的浏览器选项,并且可以从以下任何一种浏览器中进行选择列表,例如 Chrome,Edge,firefox,Internet Explorer,歌剧,野生动物园等。
Selenium with Python Tutorial
以下是打开Goog​​le Chrome浏览器的示例代码:
driver = webdriver.Chrome()
Step3
下一步,我们将最大化浏览器窗口的大小,示例代码如下:
driver.maximize_window()
Step4
然后,我们将导航到给定的URL。
示例代码如下:
driver.get("https://www.google.com/")
注意: 我们知道Python是一种非常容易编写代码的语言,因为我们不必像编写Java那样编写多个语句。或者,如果要注释掉某些内容,我们只需在语句中添加一个井号[#],或者我们可以直接从键盘上按Ctrl +正斜杠[/]。
第5步
在此步骤中,我们试图借助其名称属性值。
右键单击 Google搜索文本框,然后在弹出菜单中选择检查选项,如下图所示: SeleniumPython教程 将打开开发人员工具窗口,其中包含开发 Google搜索文本框时使用的所有特定代码。 然后复制其 Name 属性的值,即" q ",如下图所示: Selenium with Python Tutorial
这里是示例代码:
driver.find_element_by_name("q").send_keys("lidihuo")
Step6
一旦我们确定了Google搜索文本框,我们就会确定 Google搜索按钮。
因此,请执行以下过程:
右键单击 Google搜索按钮,然后从给定的弹出菜单中选择检查选项,如下图所示: Selenium with Python Tutorial 将打开开发人员工具窗口,其中包含在开发 Google搜索按钮时使用的所有特定代码。 然后,复制其名称属性的值,即" btnK ",如下图所示: Selenium with Python Tutorial
而且,示例代码如下:
driver.find_element_by_name("btnK").send_keys(Keys.ENTER)
Step7
在最后一步,我们正在关闭浏览器。
并且,用于关闭浏览器的示例代码如下:
driver.close()
完成上述所有步骤之后,我们的最终测试脚本将如下所示:
from Selenium import webdriver
import time
from Selenium.webdriver.common.keys import Keys
print("sample test case started")
driver = webdriver.Chrome()
#driver=webdriver.firefox()
#driver=webdriver.ie()
#maximize the window size
driver.maximize_window()
#navigate to the url
driver.get("https://www.google.com/")
#identify the Google search text box and enter the value
driver.find_element_by_name("q").send_keys("lidihuo")
time.sleep(3)
#click on the Google search button
driver.find_element_by_name("btnK").send_keys(Keys.ENTER)
time.sleep(3)
#close the browser
driver.close()
print("sample test case successfully completed")
注意: 导入时间: 时间是Python模块,用于处理与时间相关的任务,例如time.sleep()。
来自Selenium.webdriver.common.keys导入密钥:
在这里,我们像上面的那样从Selenium中添加了密钥库。代码,我们使用 Enter 键而不是 click()方法来执行特定方案。

运行并验证测试脚本

完成编写Selenium测试脚本后,我们将运行测试脚本。
在这里,我们将以两种方式运行测试脚本:
在Python IDE中运行 在命令提示符下运行
在Python IDE中运行
因此,首先,我们将了解如何在Python IDE中运行Selenium测试脚本。
右键单击代码,然后从弹出菜单中选择 Run'Sample1',如下图所示: Selenium with Python Tutorial 运行此脚本时,它将产生异常,因为我们没有下图所示的Chrome驱动程序可执行文件: Selenium with Python Tutorial
为克服此异常,我们将下载chrome可从以下链接执行驱动程序: https: //chromedriver .storage.googleapis.com/index.html?path = 79.0.3945.36/
点击上面的链接后,我们将根据我们的操作系统平台点击 zip文件。就像我们拥有 Windows平台一样,这就是为什么我们单击 zip 下载可执行文件的原因,如下面的屏幕截图所示: Selenium with Python Tutorial 下载 exe 文件后,我们可以将该文件粘贴到Python文件夹中并解压缩。 然后,我们将在Python IDE中再创建一个名为库的文件夹,称为 Browsers 。 右键单击项目(SeleniumTest)→新建→目录,如下图所示: Selenium with Python Tutorial 而且,我们将手动将所有驱动程序的可执行文件添加到 Browsers 文件夹中。 为此,我们将从 Python文件夹复制 chrome驱动程序exe 文件,并粘贴到 Browser 文件夹中,如我们所见在下图中: Selenium with Python Tutorial 现在转到 PyCharm IDE,并复制chromdriver.exe文件的绝对路径,如下图所示: Selenium with Python Tutorial 将语句" driver = webdriver.Chrome()"替换为以下语句:
driver=webdriver.Chrome(r"C:\Users\JTP\PycharmProjects\SeleniumTest\Browsers\chromedriver.exe")
注意: 在这里,我们将使用" r"克服Unicode错误。
如下面的屏幕截图所示,如果不将r放入代码中,则会生成语法错误。
Selenium with Python Tutorial 之后,我们将再次运行 sample1 ,它将成功执行代码,如下图所示: Selenium with Python Tutorial
以上测试脚本将启动Google Chrome浏览器并使所有测试场景自动化。
Selenium with Python Tutorial
运行在命令提示符
要在命令提示符下运行上述测试脚本,请执行以下过程:
复制 Sample1.py 文件的位置,如下图所示: Selenium with Python Tutorial 并粘贴命令提示符,首先转到特定文件夹,然后输入以下命令:
Python Sample1.py
然后,按 Enter 键,正如我们在下面的屏幕快照中看到的那样,示例测试用例一直处于凝视状态。 在自动完成所有方案后,它将显示为成功完成示例测试用例的消息。 Selenium with Python Tutorial

在Eclipse中配置PyDev

这是另一种使用Python执行Selenium测试脚本的方法。
在本节中,我们将在Eclipse中安装PyDev,然后实现Selenium测试脚本在上面。
安装PyDev 使用Python执行Selenium测试脚本。

安装PyDev

要在Eclipse中安装PyDev,请执行以下过程:
PyDev安装 设置首选项 创建一个新项目 创建新程序包 创建PyDev模块

PyDev安装

在开始在Eclipse中安装PyDev之前,请确保我们已经安装了最新版本的Eclipse IDE。
双击Eclipse IDE软件。 然后,转到工具栏上的帮助,然后在给定的弹出菜单中选择 Eclipse Marketplace 选项,如下图所示: Selenium with Python Tutorial Eclipse Marketplace窗口将打开,然后在搜索区域中,键入 PyDev ,然后按 Enter 然后,点击安装按钮,如下面的屏幕截图所示: Selenium with Python Tutorial 点击安装按钮后,它将开始安装过程,然后单击确认按钮进行进一步的过程,如下面的过程所示: Selenium with Python Tutorial 然后,选择我接受许可协议的条款选项,然后单击 Finish (完成)按钮以完成安装过程,如下图所示: Selenium with Python Tutorial 安装完成后,请重新启动Eclipse IDE,如下图所示: Selenium with Python教程 在那之后,我们将根据需求设置使用Python项目的首选项。

设置首选项

要设置首选项,请执行以下过程:
转到Eclipse Ide工具栏上的 Window 选项,然后在给定列表中选择 Preference 选项,如下图所示: Selenium with Python Tutorial "偏好设置"窗口将打开,我们将在其中展开 PyDev ,然后再次展开 Interpreters ,然后从给定列表中选择 Python Interpreter 。单击浏览Python/pypy.exe 选项,如下图所示:
PyDev→解释器→Python解释器
Selenium with Python Tutorial 一旦单击"浏览"以找到 Python/pypy.exe ,我们将提供Python的解释器名称和可执行文件文件路径。 为此,在选择解释器弹出窗口中,单击浏览按钮,然后在我们的本地系统中浏览Python的可执行文件路径,然后单击在确定按钮上,如下图所示: Selenium with Python Tutorial 之后,单击全选按钮,然后单击确定按钮以选择文件夹,如下图所示: Selenium with Python Tutorial 然后,点击应用并关闭按钮,以完成设置首选项过程,如下面的屏幕截图所示: Selenium with Python Tutorial 成功设置首选项后,我们将使用Python创建一个新项目。

创建新项目

要创建新项目,请执行以下步骤:
转到文件菜单,然后转到新建,然后在弹出菜单中选择其他选项,如下图所示:
文件→新建→其他
Selenium with Python Tutorial 选择其他选项后​​, [新建] 窗口将打开,我们将在其中展开 PyDev 并选择 PyDev Project ,然后点击下一步按钮,如下图所示: Selenium with Python Tutorial 一旦我们单击"下一步"按钮;我们将提供项目名称,然后单击完成按钮,如下图所示: Selenium with Python Tutorial Python项目是在Eclipse中创建的,如下图所示: Selenium with Python Tutorial 创建完Python项目后,我们将创建一个新的Python包。

创建新程序包

按照以下过程创建新程序包:
右键单击新创建的项目( SeleniumTest ),转到 New ,然后在给定的Popup菜单中选择 PyDev Package 我们可以在下图中看到: Selenium with Python Tutorial 然后提供 PyDev软件包的名称,然后单击 Finish (完成)按钮,如下图所示: Selenium with Python Tutorial 正如我们在下面的屏幕截图中看到的那样,新软件包已创建。 Selenium with Python Tutorial
创建PyDev包后,我们将创建一个PyDev 模块。

创建PyDev模块

要创建PyDev模块,请执行以下过程:
右键单击新创建的Package [Demo],然后转到 New ,然后从给定列表中选择 PyDev模块,如下面的屏幕快照所示:
演示→新建→PyDev模块
Selenium with Python Tutorial 然后给PyDev模块名称 [Test] ,然后单击 Finish 按钮,如下图所示: Selenium with Python Tutorial 之后,我们将从给定列表中选择空模板,然后点击确定按钮,如下图所示: Selenium with Python Tutorial 创建完Python模型后,就可以编写和执行Selenium测试脚本了。

编写并执行Selenium测试脚本

编写Selenium测试脚本

出于测试目的,我们将在 Gmail 应用程序上执行登录测试。
在此测试中,我们将自动执行以下测试方案:
动作 输入 预期结果
从Selenium导入Web驱动程序。 应该导入Web驱动程序。
打开Goog​​le Chrome浏览器。 应打开Goog​​le Chrome浏览器。
最大化浏览器并删除所有cookie 应该最大化浏览器,并删除co​​okie。
导航至主页 Gmail应用程序。 https://www.gmail.com 必须显示Gmail主页。
识别用户名文本框并传递值。 xyz11@gmail.com 应该标识用户名文本框,并在用户名文本框中输入值。
点击下一步按钮。 应单击下一个按钮。
标识密码文本框并传递值。 ####### 应该标识密码文本框,并在"密码"文本框中输入值。
点击下一步按钮。 应单击下一个按钮。
关闭浏览器。 浏览器应该关闭。
请遵循以下步骤:
Step1
第一步,我们将在以下声明:
from selenium import webdriver
Step2
此后,我们将打开Goog​​le Chrome浏览器。
要启动Google Chrome或任何其他浏览器(例如Firefox等),我们需要从以下链接中下载Chrome驱动程序的可执行文件: https://sites.google.com/a/chromium.org/chromedriver/downloads 然后,将下载的exe文件粘贴到Python包(演示)中,以克服异常,如下面的屏幕截图所示: Selenium with Python Tutorial
示例代码如下:
#open Google Chrome browser
driver = webdriver.Chrome()
Step3
下一步,我们最大化并删除浏览器窗口的所有cookie。
这里是示例代码:
#maximize the window size
driver.maximize_window()
#delete the cookies
driver.delete_all_cookies()
Step4
在此步骤中,我们将导航到Gmail应用程序n URL。
示例代码如下:
#navigate to the url
driver.get("https://www.gmail.com")
Step5
一旦导航到Gmail应用程序的URL,我们将识别用户名文本框并传递其值。
要标识用户名文本框,请执行以下过程:
右键单击用户名文本框。 然后在给定的弹出菜单中选择检查选项,如下面的屏幕快照所示: Selenium with Python Tutorial "开发者工具"窗口将打开,其中包含在开发用户名文本框时使用的所有特定代码。 然后,复制其 id属性的值,即: identifierId ,如下图所示: Selenium with Python Tutorial 还有,这里是示例代码:
#identify the user name text box and enter the value
driver.find_element_by_id("identifierId").send_keys("xyz11@gmail.com")
time.sleep(2)
Step6
在此步骤中,我们将确定 Next 按钮并单击它。
要确定下一步按钮,请按照以下过程操作:
右键单击下一个按钮,然后在给定的弹出菜单中单击检查选项,如下图所示: Selenium with Python Tutorial 开发人员工具窗口将打开,其中包含下一步 开发中使用的所有特定代码。 然后,从 chropath 复制其绝对XPath 的值: //span [@ class ='RveJvd snByac'] >部分,如下图所示: Selenium with Python Tutorial 这里是示例代码:
#click on the next button
driver.find_element_by_xpath("//span[@class='RveJvd snByac'][1]").click()
time.sleep(3)
Step7
在此步骤中,我们将识别密码文本框并传递其值。
要识别密码文本框,请按照以下过程操作:
右键单击密码文本框,然后从给定的弹出菜单中单击检查选项,如下面的屏幕截图所示: Selenium with Python Tutorial 开发人员工具窗口将打开,其中包含在开发密码文本框时使用的所有特定代码。 然后复制 name 属性的值,即密码,如下图所示: Selenium with Python Tutorial
这里是示例代码:
#identify the password text box and enter the value 
driver.find_element_by_name("password").send_keys("########")
time.sleep(3)
Step8
在此步骤中,我们将确定 Next 按钮并单击它。
要确定下一步按钮,请按照以下过程操作:
右键单击下一个按钮,然后在给定的弹出菜单中单击检查选项,如下图所示: Selenium with Python Tutorial 开发人员工具窗口将打开,其中包含下一步 开发中使用的所有特定代码。 复制其绝对XPath 的值,即: //span [contains(text(),'Next') ] from我们在下图中看到的 chropath 部分: Selenium with Python Tutorial
这里是示例代码:
#click on the next button
driver.find_element_by_xpath("//span[contains(text(),'Next')][1]").click()
time.sleep(3)
Step9
在测试脚本的最后一步,我们将关闭浏览器。
这里是示例代码:
#close the browser
driver.close()
而且,成功编写完上述所有步骤之后,我们的最终测试脚本将如下所示。
from Selenium import webdriver
import time
from Selenium.webdriver.common.keys import Keys
print("test case started")
#open Google Chrome browser
driver = webdriver.Chrome()
#maximize the window size
driver.maximize_window()
#delete the cookies
driver.delete_all_cookies()
#navigate to the url
driver.get("https://www.gmail.com")
#identify the user name text box and enter the value
driver.find_element_by_id("identifierId").send_keys("xyz11@gmail.com")
time.sleep(2)
#click on the next button
driver.find_element_by_xpath("//span[@class='RveJvd snByac'][1]").click()
time.sleep(3)
#identify the password text box and enter the value 
driver.find_element_by_name("password").send_keys("#########")
time.sleep(3)
#click on the next button
driver.find_element_by_xpath("//span[contains(text(),'Next')][1]").click()
time.sleep(3)
#close the browser
driver.close()
print("Gmail login has been successfully completed")
注意: 在上面的代码中,在以下位置使用您的Gmail ID: xyz11@gmail.com和密码: #########

运行测试脚本

要运行上述测试脚本,我们将右键单击代码,然后选择运行方式→如下面的屏幕截图所示,我们将执行Python运行:
Selenium with Python Tutorial
以上测试脚本将启动Google Chrome浏览器并自动执行所有测试方案。
Selenium with Python Tutorial
而且,如下面的屏幕快照所示,在控制台屏幕上获得打印消息(输出)后,代码成功运行。
使用Python的Selenium教程
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4