from selenium import webdriver
import time
#显示等待的导入
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.keys import Keys
# 用webdriver启动浏览器
dr=webdriver.Chrome()
#打开网易云音乐页面
dr.get('https://music.163.com/')
# 设置窗口的长宽
# dr.set_window_size(1800,800)
#设置窗口最大化
dr.maximize_window()
#设置全局的隐式等待(直到找到元素)
dr.implicitly_wait(10)
#显示等待,直到元素可见
ele=WebDriverWait(dr,5,0.5).until(
ec.visibility_of_element_located((By.ID,"g_nav2"))
)
# 截屏,截取整个界面
dr.get_screenshot_as_file('./v.png')
# 截屏,截取某个元素
ele.screenshot('./p.png')
#获取元素的大小
print('元素的大小:',ele.size)
#元素是否显示
print('元素是否显示:',ele.is_displayed())
#获取当前窗口
print(dr.title)
#获取当前的url
print(dr.current_url)
#获取当前窗口(窗口句柄)
print('窗口句柄:',dr.current_window_handle)
#点击排行榜
dr.find_element_by_css_selector('ul[class="nav"]>li:nth-of-type(2)').click()
#webdriver切换frame
dr.switch_to.frame('g_iframe')
time.sleep(2)
#点击播放,可以开始听歌了
dr.find_element_by_css_selector('[class="btns f-cb"]>a:nth-of-type(1)').click()
#听20秒这首歌
time.sleep(10)
# 切换到上一层frame 在这里两种方法都适用,只有一个主HTML和一个嵌套的frame
dr.switch_to.parent_frame()
# # 从里面的frame切换到主HTML
# dr.switch_to.default_content()
#文本框输入 [歌名]
dr.find_element_by_css_selector('#srch').send_keys('I Am You')
#输入回车
dr.find_element_by_css_selector('#srch').send_keys(Keys.ENTER)
#哈哈,这里又需要切换iframe
#webdriver切换frame
dr.switch_to.frame('g_iframe')
time.sleep(2)
#播放这首歌
song=dr.find_element_by_css_selector('[class="srchsongst"]>[class="item f-cb h-flag "]:nth-of-type(1)>div:nth-of-type(1)')
#显示等待,直到元素可见
ele=WebDriverWait(dr,5,0.5).until(
ec.visibility_of(song)
)
song.click()
#强制等待30秒,再听会歌~
time.sleep(30)
print('结束了~~~')
#关闭所有窗口
dr.quit()