selenium(鼠标操作、页面操作、用例设计)

server/2025/3/27 11:30:53/

ActionChains类(鼠标操作)

常用于模拟鼠标的行为,比如单击、双击、拖拽等行为
       click(on_element=None)     --- 鼠标单击
       double_click(on_element=None)    ---  双击      
       context_click(on_element=None)   ---  右击      
       click_and_hold(on_element=None)   ---  鼠标单击并且按住不放
       drag_and_drop(source,target)   ---  拖拽
       drag_and_drop_by_offset(source,xoffset,yoffset)   ---  将目标拖动到指定的位置
       key_down(value,element=None)  ---  按下某个键盘上的键
       key_up(value,element=None)   ---  松开某个键
       move_by_offset(xoffset,yoffset)   ---  鼠标从当前位置移动到某个坐标
       move_to_element(to_element)   ---  鼠标移动到某个元素
       move_to_element_with_offset(to_element,xoffset,yoffset)  
---  移动到距某个元素(左上角坐标)多少距离的位置
       perform()    ---  执行链中的所有动作
       release(on_element=None)   ---  在某个元素位置松开鼠标左

案例:

在京东首页,让光标悬停在“我的京东”上,随后点击“待处理订单”
from  selenium  import   webdriver #导入selenium模块中的webdriver
from selenium.webdriver.common.action_chains import ActionChains
from time import *
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.jd.com/")
dx.maximize_window()
sleep(1)
wdjd=dx.find_element_by_xpath('//*[@id="ttbar-myjd"]/div[1]/a')#根据xpath寻找到“我的京东”
ActionChains(dx).move_to_element(wdjd).perform()#将光标悬停在“我的京东”上并点击
sleep(1)
dx.find_element_by_xpath('//*[@id="ttbar-myjd"]/div[2]/div[1]/div[1]/div[1]/a').click()

text 获取文本

(1)text 获取文本

from  selenium.webdriver.common.action_chains import  ActionChains
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
time.sleep(2)
sz=dx.find_element_by_id("s-usersetting-top").text

(2)if 判断文本是否正常

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.common.action_chains import  ActionChains
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
time.sleep(2)
sz=dx.find_element_by_id("s-usersetting-top").text
print(sz)
if  sz=="设置":print("ok")
else:print("no")

title  标题

(1)重开窗口的标题都在第一个页面上

图片

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title)
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title)
time.sleep(2)
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title)

图片

(2)通过get 打开网页,覆盖的,标题就是打开的页面

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
dx.get("https://www.baidu.com")
print(dx.title) #百度一下,你就知道
time.sleep(2)
dx.get("https://www.jd.com")
print(dx.title) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!

assert 断言

assert判断:正确的通过,执行下一步,失败就报错

图片

图片

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
js=dx.title
assert  js=="过期更新"
print("ok")

切换窗口

(1)当页面出现两个窗口,可以根据索引切换,索引位0,1

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle  #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
dx.switch_to.window(jbs[1]) #两个窗口索引 0,1
time.sleep(2)
dx.find_element_by_id("kw").send_keys(" 切换")

(2)当页面出现三个窗口,可以根据索引切换,索引位0,2,1

案例1:切换最后的页面

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle  #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
dx.switch_to.window(jbs[1]) #两个窗口索引 0,1
time.sleep(2)
dx.find_element_by_id("kw").send_keys(" 切换")

案例2:

切换中间的窗口

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle  #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
dx.switch_to.window(jbs[2]) #两个窗口索引 0,1
time.sleep(2)
dx.find_element_by_link_text("免费注册").click()

(3).通过for ,判断title 切换窗口

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle  #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
for i  in jbs:dx.switch_to.window(i)if  "百度一下,你就知道" in dx.title:break
print(dx.title)
dx.find_element_by_id("kw").send_keys("切换成功")

图片

select 下拉框讲解

(1)下拉框案例

图片

图片

案例:

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.support.select import  Select
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/select.html") #通过get打开页面
time.sleep(2)
wz=dx.find_element_by_id("dropdown")
# Select(wz).select_by_index(2) #通过索引来选择
# Select(wz).select_by_value("option2")  #通过value来选择
Select(wz).select_by_visible_text("绍兴") # 通过text 文本来选择

图片

alert弹框

图片

链接:

file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html代码:

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.support.select import  Select
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html") #通过get打开页面
time.sleep(2)
tk=dx.switch_to.alert #切换到框内
tk.dismiss() #   取消
time.sleep(2)
tk.accept()  #确认

图片

确认性弹框

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.support.select import  Select
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/enter.html")
time.sleep(2)
dx.find_element_by_class_name("alert").click() #点击确认按钮
time.sleep(2)
tk=dx.switch_to.alert #切换到框内
time.sleep(2)
tk.accept()  #确认

图片

输入性

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/prompt.html")
time.sleep(2)
dx.find_element_by_class_name("alert").click() #点击确认按钮
time.sleep(2)
tk=dx.switch_to.alert #切换到框内
tk.send_keys("dcs") #输入内容
time.sleep(2)
tk.accept()  #确认

图片

上传文件类型

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/upload_file.html")
time.sleep(2)
dx.find_element_by_id("file").send_keys(r"E:\az\ls\tttt.txt")

图片

frame框京东的页面:

图片

京东链接地址:

https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=F0BE062356EAD84676C4CD60B26E2A8877AF3617BC5D527476899F1F50B0C789A2FD39C9BBE8F6311FFDA89EA89F9581&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fuuid%3D7831301c1cb641c6b81b35537bb966f7网易邮箱

图片

链接:https://smart.mail.163.com/login.htm?df=smart_android&utm_source=email_mobile

图片

代码:

from  selenium  import   webdriver #导入selenium模块中的webdriver
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=F0BE062356EAD84676C4CD60B26E2A8877AF3617BC5D527476899F1F50B0C789A2FD39C9BBE8F6311FFDA89EA89F9581&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fuuid%3D7831301c1cb641c6b81b35537bb966f7")
time.sleep(2)
wz=dx.find_element_by_id("ptlogin_iframe")
dx.switch_to.frame(wz)
time.sleep(2)
dx.find_element_by_link_text("密码登录").click()
time.sleep(2)
dx.switch_to.default_content() #退出框
time.sleep(2)
dx.find_element_by_link_text("服务协议").click()

滚动条

'window.scrollTo(0,2000)' 

图片

案例1:


from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.support.select import  Select
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.jd.com") #通过get打开页面
time.sleep(2)
js1='window.scrollTo(0,2000)'  #0表示开始顶端 0,2000
dx.execute_script(js1)
time.sleep(2)
js2='window.scrollTo(0,0)'  #0表示开始顶端
dx.execute_script(js2)

图片

案例2:

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.support.select import  Select
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.jd.com") #通过get打开页面
time.sleep(2)
js='var d=document.documentElement.scrollTop=2000'
dx.execute_script(js)
time.sleep(2)
js1='var d=document.documentElement.scrollTop=0'
dx.execute_script(js1)

图片

案例3:滑动条进行循环加载

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.support.select import  Select
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.jd.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
n=0
while n<=5000:n+=1000js='var d=document.documentElement.scrollTop='+str(n)dx.execute_script(js)time.sleep(2)
 

keys类(内容:复制,黏贴,剪切,全选,确认)

导入一个keys类

案例1

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.common.keys import Keys
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.find_element_by_id("kw").send_keys("dcs") #输入
time.sleep(2)
dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"a") #全选
time.sleep(2)
dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"x") #剪切
time.sleep(2)
dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"v") #剪切
time.sleep(2)
dx.find_element_by_id("kw").send_keys(Keys.ENTER) # 确认

案例2

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  selenium.webdriver.common.keys import Keys
import  time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
def  hs(wz,*dz):dx.find_element_by_id(wz).send_keys(dz)time.sleep(2)
if __name__ == '__main__':hs("kw","dcs")hs("kw", Keys.CONTROL,"a")hs("kw", Keys.CONTROL, "x")hs("kw", Keys.CONTROL, "v")hs("kw", Keys.ENTER)

图片

根据场景设计场景用例

1 .一条一条的自动化用例编写

(1)登录场景

(2)登录==用户管理

(3)登录==系统管理

(4)登录==退出

案例:

登录场景1

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  time  import   *
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
sleep(2)
#输入账号
dx.find_element_by_id("userAccount").send_keys("admin")
sleep(2)
# 输入密码
dx.find_element_by_id("loginPwd").send_keys("123456")
sleep(2)
#点击登录
dx.find_element_by_id('loginBtn').click()

案例2:登录==用户管理

#登录==用户管理
from  selenium  import   webdriver #导入selenium模块中的webdriver
from  time  import   *
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
sleep(2)
#输入账号
dx.find_element_by_id("userAccount").send_keys("admin")
sleep(2)
# 输入密码
dx.find_element_by_id("loginPwd").send_keys("123456")
sleep(2)
#点击登录
dx.find_element_by_id('loginBtn').click()
sleep(2)
# 点击用户管理
dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()

案例3:登录==系统管理

#登录==系统管理
from  selenium  import   webdriver #导入selenium模块中的webdriver
from  time  import   *
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
sleep(2)
#输入账号
dx.find_element_by_id("userAccount").send_keys("admin")
sleep(2)
# 输入密码
dx.find_element_by_id("loginPwd").send_keys("123456")
sleep(2)
#点击登录
dx.find_element_by_id('loginBtn').click()
sleep(2)
# 点击系统管理
dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()

案例4:

#登录==退出
from  selenium  import   webdriver #导入selenium模块中的webdriver
from  time  import   *
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
sleep(2)
#输入账号
dx.find_element_by_id("userAccount").send_keys("admin")
sleep(2)
# 输入密码
dx.find_element_by_id("loginPwd").send_keys("123456")
sleep(2)
#点击登录
dx.find_element_by_id('loginBtn').click()
sleep(2)
#退出
dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()

封装用例(将用例放在每一个函数中)

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  time  import   *
class  Cms(object):def __init__(self):passdef dl(self):dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面sleep(2)#输入账号dx.find_element_by_id("userAccount").send_keys("admin")sleep(2)# 输入密码dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)#点击登录dx.find_element_by_id('loginBtn').click()def  yhgl(self):dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面sleep(2)#输入账号dx.find_element_by_id("userAccount").send_keys("admin")sleep(2)# 输入密码dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)#点击登录dx.find_element_by_id('loginBtn').click()sleep(2)# 点击用户管理dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()def  xtgl(self):dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面sleep(2)#输入账号dx.find_element_by_id("userAccount").send_keys("admin")sleep(2)# 输入密码dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)#点击登录dx.find_element_by_id('loginBtn').click()sleep(2)# 点击系统管理dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()def  quit(self):dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面sleep(2)#输入账号dx.find_element_by_id("userAccount").send_keys("admin")sleep(2)# 输入密码dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)#点击登录dx.find_element_by_id('loginBtn').click()sleep(2)#退出dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()if __name__ == '__main__':ldx=Cms()# ldx.dl()# ldx.yhgl()# ldx.quit()ldx.xtgl()

优化用例

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  time  import   *
class  Cms(object):def __init__(self):passdef dl(self):self.dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象self.dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面sleep(2)#输入账号self.dx.find_element_by_id("userAccount").send_keys("admin")sleep(2)# 输入密码self.dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)#点击登录self.dx.find_element_by_id('loginBtn').click()def  yhgl(self):self.dl() #调用登录sleep(2)# 点击用户管理self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()def  xtgl(self):self.dl()# 点击系统管理sleep(2)self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()def  quit(self):self.dl()#退出sleep(2)self.dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()
if __name__ == '__main__':ldx=Cms()# ldx.dl()# ldx.yhgl()ldx.quit()# ldx.xtgl()

将登录写在构造函数中

from  selenium  import   webdriver #导入selenium模块中的webdriver
from  time  import   *
class  Cms(object):def __init__(self):self.dx = webdriver.Chrome()  # 创建一个驱动谷歌浏览器的对象self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")  # 通过get打开页面sleep(2)#输入账号self.dx.find_element_by_id("userAccount").send_keys("admin")sleep(2)# 输入密码self.dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)#点击登录self.dx.find_element_by_id('loginBtn').click()def  yhgl(self):sleep(2)# 点击用户管理self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()def  xtgl(self):# 点击系统管理sleep(2)self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()def  quit(self):#退出sleep(2)self.dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()
if __name__ == '__main__':ldx=Cms()# ldx.yhgl()# ldx.quit()ldx.xtgl()


http://www.ppmy.cn/server/178704.html

相关文章

系统设计类问题回答模板

在系统设计类问题的面试中,一个好的回答不仅仅体现了候选人的技术能力,还能展现其对问题本质的理解、清晰的沟通技巧以及解决方案的条理性和可扩展性。以下是一个通用的回答模板,以及回答技巧、白板演示的指导方法,并会结合实际案例提供一些示例。 一、系统设计类问题回答的…

2025-03-23 学习记录--C/C++-C语言 sprintf()实现将多个值按指定格式拼接成字符串

C语言 sprintf()实现将多个值按指定格式拼接成字符串 举个例子 &#x1f330;&#xff1a;将字符串 “m” 与数字 0、1、2 动态拼接成 “m0”、“m1”、“m2”&#xff1a;&#x1f447;&#x1f3fb; #include <stdio.h> // 包含标准输入输出库&#xff0c;用于使用输入…

《Manus学习手册》.pdf(文末附完整版下载地址)

大家好&#xff0c;我是吾鳴。 吾鳴今天要给大家分享的一份比较全面详细的Manus学习手册&#xff0c;该学习手册主要包含Manus产品概述与核心理念、Manus功能与使用场景、Manus技术架构与工作流、Manus案例库与用户实践、邀请码获取与内测信息、Manus与传统AI对比与优势、用户评…

分治-快速排序系列一>快速排序

目录 题目方法&#xff1a;优化方法&#xff1a;代码&#xff1a; 题目方法&#xff1a; 忘记快速排序看这里&#xff1a;链接: link 优化方法&#xff1a; 代码&#xff1a; public int[] sortArray(int[] nums) {qsort(nums,0,nums.length-1);return nums;}private void qso…

Python模块化设计——递归

1.以下代码执行后,输出结果为____________。 def printDigit(n):print(n%10,end="")if(n>10

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网&#xff0c;将我们与世界的每一个角落紧密相连。然而&#xff0c;当某些与自己名字相关的资料不再希望被公众轻易检索到时&#xff0c;如何在百度搜索中有效“隐身”&#xff0c;成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…

AF3 Rotation 类解读

Rotation 类(rigid_utils 模块)是 AlphaFold3 中用于 3D旋转 的核心组件,支持两种旋转表示: 1️⃣ 旋转矩阵 (3x3) 2️⃣ 四元数 (quaternion, 4元向量) 👉 设计目标: 允许灵活选择 旋转矩阵 或 四元数 封装了常用的 旋转操作(组合、逆旋转、应用到点上等) 像 torch.…

使用Docker部署RabbitMQ

第一步&#xff1a;安装 RabbitMQ # 1. 拉取镜像 docker pull rabbitmq:3.12.0-management# 2. 启动容器&#xff08;开放端口 数据持久化&#xff09; docker run -d \--nameshare_rabbitmq \-p 5672:5672 \ # AMQP 协议端口-p 15672:15672 \ # 管理界面端口…