Selenium中怎么实现元素定位

2021-04-19 18:16发布

9条回答
羊羊羊羊
2楼 · 2021-04-20 13:49

1.id定位: find_element_by_id() 从上面定位到的搜索框属性中,有个...

2.name定位: find_element_by_name() 从上面定位到的搜索框属性中...

3.class定位:find_element_by_class_name() 从上面定位到的...

4.tag定位:find_element_by_tag_name() 如果懂HTML知识...

5.link定位:find_element_by_link_text() 此种方法是专门用来..

6、partial_link定位:find_element_by_partial_link_text()

有时候一个超链接的文本很长很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了。

7、xpath定位:find_element_by_xpath()

8、CSS定位:find_element_by_css_selector()

这种方法相对xpath要简洁些,定位速度也要快些,但是学习起来会比较难理解,这里只做下简单的介绍。


三岁奶猫
3楼 · 2021-04-20 14:08

适用下述1,2的网页HTML代码如下:

1、使用ID定位

WebElement element = driver.findElement(By.id("username"));

由于页面元素的id是唯一的,所以用id来定位一个元素,可保证其唯一性。

2、使用name定位

WebElement element = driver.findElement(By.name("username"));

由于页面元素的name属性不是唯一的,所有通过name定位可能同时定位到多个元素。

 3、使用Class名称定位

WebElement element = driver.findElement(By.className("submitBut"));

此方法根据页面元素的class属性来定位。

4、使用链接的全部内容定位

WebElement element = driver.findElement(By.linkText("sougou 搜索"));

此方法的链接文字必须精确匹配到“sougou 搜索”,否则无法找到链接。

5、使用链接的部分内容定位

(1)WebElement element = driver.findElement(By.partialLinkText("搜索"));

(2)Listelement = driver.findElements(By.partialLinkText("搜索"));

此方法的链接文字只需模糊匹配到“搜索”即可,

(1)定位到的元素是页面第一个满足条件的元素,只有一个;

(2)定位到页面所有满足条件的元素,结果是个集合。

6、使用标签名定位

(1)WebElement element = driver.findElement(By.tagName("a"));

(2)List element = driver.findElements(By.tagName("a"));

此方法根据标签的名称匹配

(1)定位到页面第一个匹配到的a标签;

(2)定位到页面所有匹配到的a标签。

 7、使用XPath定位 XPath定位功能比较强大,XPath是在XML文档树中的某个节点既可以向前搜索定位,也可以向后搜索定位。

 8、使用CSS定位 css定位和xpath定位很类似,只是定位速度比xpath更快,更稳定。

 9、jQuery定位 jQuery定位其实就是使用jQuery库的查找功能,主要应用于使用css不能很好定位的浏览器。

10、表格的定位方法

上面的7,8,9,10定位方法,会拎出来分别单独详细说明。


浅浅77
4楼 · 2021-04-20 14:57

一、查看页面元素


用谷歌浏览器打开百度首页,点击右上角>更多工具>开发者工具,就可以看到整个页面的html代码了

点击框中左上角的箭头图标,移动鼠标到百度搜索框,就可以自动定位到百度搜索框的HTML代码了,查看到搜索框的属性,我们可以看到搜索框有id,name,class等属性。

二、元素定位


 

1、id定位: find_element_by_id()

从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框

 代码:

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过id定位搜索框,并输入seleniumdriver.find_element_by_id('kw').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()


2、name定位: find_element_by_name()

从上面定位到的搜索框属性中,有个name="wd"的属性,我们可以通过这个name定位到这个搜索框

代码:


# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过name定位搜索框,并输入seleniumdriver.find_element_by_name('wd').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()


3、class定位:find_element_by_class_name()

从上面定位到的搜索框属性中,有个class="s_ipt"的属性,我们可以通过这个class定位到这个搜索框

代码:


# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过class定位搜索框,并输入seleniumdriver.find_element_by_class_name('s_ipt').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()


4、tag定位:find_element_by_tag_name()

如果懂HTML知识,我们就知道HTML是通过tag来定义功能的,比如input是输入,table是表格,等等...。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多div,input,a等tag,所以很难通过tag去区分不同的元素。基本上在我们工作中用不到这种定义方法,仅了解就行。下面代码仅做参考,运行时必定报错

代码:


# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过tag定位搜索框,并输入selenium, 此处必报错driver.find_element_by_tag_name('input').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()


5、link定位:find_element_by_link_text()

此种方法是专门用来定位文本链接的,比如百度首页右上角有“新闻”,“hao123”,“地图”等链接

我们来定位“新闻”这个链接元素

代码:


# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过link定位"新闻"这个链接并点击driver.find_element_by_link_text('新闻').click()# 等待5秒sleep(5)# 退出driver.quit()


6、partial_link定位:find_element_by_partial_link_text()

有时候一个超链接的文本很长很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了。

我们用这种方法来定位百度首页的“新闻”超链接


# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过partial_link定位"新闻"这个链接并点击driver.find_element_by_partial_link_text('闻').click()# 等待5秒sleep(5)# 退出driver.quit()


7、xpath定位:find_element_by_xpath()

前面介绍的几种定位方法都是在理想状态下,有一定使用范围的,那就是:在当前页面中,每个元素都有一个唯一的id或name或class或超链接文本的属性,那么我们就可以通过这个唯一的属性值来定位他们。

但是在实际工作中并非有这么美好,有时候我们要定位的元素并没有id,name,class属性,或者多个元素的这些属性值都相同,又或者刷新页面,这些属性值都会变化。那么这个时候我们就只能通过xpath或者CSS来定位了。

代码:

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过xpath定位搜索框,并输入seleniumdriver.find_element_by_xpath("//*[@id='kw']").send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()

8、CSS定位:find_element_by_css_selector()

这种方法相对xpath要简洁些,定位速度也要快些,但是学习起来会比较难理解,这里只做下简单的介绍。

CSS定位百度搜索框

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过CSS定位搜索框,并输入seleniumdriver.find_element_by_css_selector('#kw').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()
希希
5楼 · 2021-04-20 19:39

用他的selenium的webdriverd的API,可以是css path定位,也可是xpath定位,还可以根据ID定位等等

更多追问追答

追问

但是class名字都是相同的,xpath写出的都定位不到。例如:"//div[@id='mainmenutree']/ul/li/ul/li[2]/a"

追答

不可能啊,按照你上面写的这个应该能定位到用这个方法find_element_by_xpath("your xpath")

你可以在浏览器中,对着想要的元素点击右键,获取XPATH


小橘子
6楼 · 2021-04-22 12:03
css 选择器是一种常用的定位网页的技术,在前端和自动化领域应用广泛。
  • 可以在 f12,console 中编写 css 选择器表达式。
  • 通用选择器有 *,element,.class,#id,[prop=value] 等。
  • 属性选择器有 =, *=,$=,^=,~=,|= 等等。
  • 组合选择器有 >,~,+ 等等。
  • 还有伪类定位。


我的网名不再改
7楼 · 2021-04-25 22:32

selenium框架中的元素定位

一、在学习如何对selenium框架中的页面元素进行定位前,先来了解一下什么是selenium。

Selenium,是一个开源的框架,主要用于做HTML页面的UI自动化测试。它支持多平台,多浏览器,多语言去实现自动化测试。框架图如下所示:

在这里插入图片描述

seleniumIDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。

seleniumGrid是一种自动化的测试辅助工具,利用它可以很方便地实现在多台机器上和异构环境中运行测试用例。

seleniumRC是selenium家族的核心,它支持多种不同语言编写的自动化测试脚本,通过seleniumRC的服务器作为代理服务器去访问应用,从而达到测试的目的。

seleniumRC分为Client Libraries和selenium Server。Client Libraries库主要用于编写测试脚本,用来控制selenium Server的库。selenium Server负载控制浏览器行为,总的来说,selenium Server主要包括三个部分:Launcher、Http Proxy和Core。其中Core是被selenium Server嵌入到浏览器页面中的,其实Core就是一堆javaScript函数的集合,即通过这些javaScript函数,我们才可以实现用程序对浏览器的操作。Launcher用于启动浏览器,把Core加载到浏览器页面当中,并把浏览器的代理设置为Http Proxy.

Selenium2.0=Selenium1.0+WebDriver

WebDriver可以看作是seleniumRC的替代品,它与浏览器紧密集成,因此支持创建更高级的测试。

这里我主要用WebDriver来定位页面元素。

WebDriver提供了一系列的对象定位方法,常见的的有以下8种:

1.driver.find_ element by name0一最常用, 简单

2.driver.find_ element by id0一最常用 .简单

3.driver.find element. by. class name( )

4.driver.find_ element. by_ tag_ name()最不靠谱

5.driver.find_ element by. link text()定位文字连接好用

6.driver.find element. by partial. link text)–定位文字连接好用

7.driver.find element. Hy xpath0-最灵活 ,万能

8.driver.find element. by_ css selector()–效率高、 万能

这里我以百度首页为例,为大家来演示在Pycharm中如何编写利用WebDriver定位页面元素自动化代码。

1.id定位


定位搜索条,定位到搜索条的id:


from selenium import webdriver # 导入webdriver

import pyautogui # 导入坐标定位类

import time # 导入时间模块,为了看清脚本步骤,需要加休眠时间

driver = webdriver.Chrome() # 打开浏览器,赋值给一个变量

driver.get(“http://www.baidu.com”) # get方法获取资源

driver.maximize_window() # 窗口最大化

time.sleep(2) # 强制休眠,为看下面的输入内容

driver.find_element_by_link_text(‘新闻’).click() # 点击文字链接

driver.find_element_by_id(“kw”).send_keys(‘Python程序’) # 输入内容,send_keys()方法为添加输入的内容

和上面同样的方法,定位百度一下的id

driver.find_element_by_id(“su”).click() # 点击搜索按钮,click()方法为提交功能和submit()方法一样。

driver.quit() # 退出相关驱动程序,并关闭所有窗口

driver.close() # 关闭当前一个窗口


2.坐标定位

此处的坐标值是我以我电脑屏幕左上角为基准,qq截屏截的。

from selenium import webdriver # 导入webdriver

import pyautogui # 导入坐标定位类

import time

driver = webdriver.Chrome()

driver.get(‘http://www.baidu.com’)

driver.maximize_window()

time.sleep(1)

driver.find_element_by_id(“kw”).send_keys(‘Python程序设计’)

time.sleep(3)

pyautogui.moveTo(721, 146, duration=2) # 实现坐标定位,duration持续时间

pyautogui.click() # 点击百度一下

pyautogui.moveTo(1360, 210, duration=2) #

pyautogui.scroll(-5000) # scroll()滚动鼠标

pyautogui.moveTo(665, 666, duration=2)

pyautogui.scroll(5000)


3.文字链接

driver.find_element_by_link_text(‘新闻’).click() # 点击文字链接,点击百度首页左上角的新闻链接


4.所有的页面元素都是在页面通过检查,来定位元素,不论是用以上8种方法中的哪一种。


from selenium import webdriver

import pyautogui

import time

driver = webdriver.Chrome() # 打开浏览器,赋值给一个变量

driver.get(“http://www.baidu.com”) # get方法获取资源

driver.maximize_window() # 窗口最大化

time.sleep(2) # 强制休眠,为看下面的输入内容


定位文字链接,可以模糊查询

driver.find_element_by_partial_link_text(‘31省区市’).click(’//*[@id=“kw”]’)

driver.close()


xpath定位:绝对路径定位

driver.find_element_by_xpath(r’html/body/div/div/div[5]/div[1]/div[1]/form/span/input’).send_keys(‘新冠’)


相对路径://表示当前页面的某个目录,input表示标签名,在页面复制的xpath是//*[@id=“kw”],在所有标签中查出,效率不是很高

driver.find_element_by_xpath(r’//input[@id=“kw”]’).send_keys(‘新冠’)

driver.find_element_by_xpath(’//input[@id=“su”]’).click()


使用class,name定位

driver.find_element_by_xpath(r’//input[@name=“wd”]’).send_keys(‘class’)

driver.find_element_by_xpath(r’//input[@class=“btn self-btn bg s_btn”]’).click()


层次与属性的结合,假如没有可利用属性值,我们可以查找上一级属性。

通过父元素去查找

driver.find_element_by_xpath(r’//form[@id=“form”]/span/input’).send_keys(‘父元素’)

driver.find_element_by_xpath(r’//form[@id=“form”]/span[2]/input’).click()


使用逻辑运算符,定位更准确

driver.find_element_by_xpath(r’//form[@id=“form” and @name=“f”]/span/input[@id=“kw” and @name=“wd”]’).send_keys(‘逻辑运算符’)


css的效果高于xpath


css定位:class属性定位:.=class

driver.find_element_by_css_selector(’.s_ipt’).send_keys(‘经济内循环2020’)

time.sleep(1)

使用id属性定位:#=id

driver.find_element_by_css_selector(’#su’).click()

通过标签名:寻找input标签,不准确,只做了解,一个页面input标签有多个

driver.find_element_by_css_selector(“input”).click()

通过父子关系定位

span>input,父元素为span,子元素为input的所有标签

driver.find_element_by_css_selector(“span>input”).send_keys(‘python程序设计’)

通过属性定位

driver.find_element_by_css_selector(’[name=“wd”]’).send_keys(‘我很丑可是我很温柔’)

driver.find_element_by_css_selector(’[type=“submit”]’).click()

组合定位

driver.find_element_by_css_selector(‘form.fm>span>input.s_ipt’).send_keys(‘python程序设计’)

driver.find_element_by_css_selector(‘form#form>span>input#kw’).send_keys(‘java程序设计’)

time.sleep(2)

driver.find_element_by_css_selector(‘span>input#su’).click()


5.by定位元素

driver.find_element(By.ID, “kw”).send_keys()

driver.find_element(By.NAME, ‘wd’)

设置浏览器大写(控制浏览器的大小)

driver.set_window_size(400, 800)

time.sleep(2)


浏览器前进和后退:

url2 = ‘http://news.baidu.com’

#driver.find_element_by_link_text(‘新闻’).click()

driver.get(url2)


time.sleep(10)

#返回百度首页

driver.back()

time.sleep(10)

#前进到新闻页面

driver.forward()

#刷新当前页面(类似于F5)

driver.refresh()


获取输入框的尺寸

s = driver.find_element_by_id(“kw”).size

print(s)

返回百度底部的备案信息

s1 = driver.find_element_by_xpath(’//*[@id=“s-bottom-layer-right”/a/span]’).text

print(s1)

text = driver.find_element_by_id(“virus-2020”).text

print(text)

#返回元素的属性值,可以是id,name,type或者其他属性

#get_attribute(name):获取元素的属性值

a = driver.find_element_by_id(‘kw’).get_attribute(‘name’)

print(a)

#is_dispplayed:设置元素是否为用户可见

b = driver.find_element_by_id(‘kw’).is_displayed()

print(b)


以上代码包含了这8种定位页面元素的方法,其实不难,要熟练记住这些方法,还得多敲多练习。



灰机带翅膀
8楼 · 2021-04-25 23:16

主要用WebDriver来定位页面元素。

WebDriver提供了一系列的对象定位方法,常见的的有以下8种:

1.driver.find_ element by name0一最常用, 简单

2.driver.find_ element by id0一最常用 .简单

3.driver.find element. by. class name( )

4.driver.find_ element. by_ tag_ name()最不靠谱

5.driver.find_ element by. link text()定位文字连接好用

6.driver.find element. by partial. link text)–定位文字连接好用

7.driver.find element. Hy xpath0-最灵活 ,万能

8.driver.find element. by_ css selector()–效率高、 万能


1、id定位: find_element_by_id()

从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框

 代码:

复制代码

# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过id定位搜索框,并输入seleniumdriver.find_element_by_id('kw').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()

复制代码

2、name定位: find_element_by_name()

从上面定位到的搜索框属性中,有个name="wd"的属性,我们可以通过这个name定位到这个搜索框

代码:


# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过name定位搜索框,并输入seleniumdriver.find_element_by_name('wd').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()


3、class定位:find_element_by_class_name()

从上面定位到的搜索框属性中,有个class="s_ipt"的属性,我们可以通过这个class定位到这个搜索框

代码:


# coding = utf-8from time import sleepfrom selenium import webdriver# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'# 启动浏览器driver = webdriver.Chrome(executable_path=driverfile_path)# 打开百度首页driver.get(r'https://www.baidu.com/')# 通过class定位搜索框,并输入seleniumdriver.find_element_by_class_name('s_ipt').send_keys('selenium')# 等待5秒sleep(5)# 退出driver.quit()


4、tag定位:find_element_by_tag_name()

如果懂HTML知识,我们就知道HTML是通过tag来定义功能的,比如input是输入,table是表格,等等...。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多div,input,a等tag,所以很难通过tag去区分不同的元素。


相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问