#!/usr/bin/python
from selenium import webdriver
import time
#动作练,鼠标事件
from selenium.webdriver.common.action_chains import ActionChains
#显示等待
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
#http库
from urllib import request
driver = webdriver.Chrome()

def get_song_url():
    '''
    :return: 歌曲的URL地址
    '''
    qq_url = 'https://y.qq.com/'
    driver.get(qq_url)
    #隐式等待,智能等待
    driver.implicitly_wait(10)
    #强制等待
    # time.sleep(10)
    #显示等待0-10
    WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.CLASS_NAME,'popup__icon_close')))

    driver.find_element_by_class_name('popup__icon_close').click()

    time.sleep(2)
    #将鼠标悬停到当前的标签
    button = driver.find_element_by_class_name('search_input__btn')
    ActionChains(driver).move_to_element(button).perform()
    #进行输入并点击
    driver.find_element_by_class_name('search_input__input').send_keys('说好不哭')
    time.sleep(0.3)
    button.click()

    song_url = driver.find_element_by_class_name('songlist__songname_txt').find_element_by_tag_name('a').get_attribute('href')
    print('你所要下载的歌曲地址:',song_url)

    return song_url

def down_song(song_url):

    js = 'window.open("http://www.douqq.com/qqmusic/")'
    driver.execute_script(js)
    #当前你程序操作的窗口句柄
    QQ_handle = driver.current_window_handle
    #所有句柄
    handles = driver.window_handles

    # print(handles)
    driver.switch_to.window(handles[-1])

    driver.find_element_by_id('mid').send_keys(song_url)
    driver.find_element_by_id('sub').click()

    time.sleep(1)

    print('正在输入mp3地址')
    mp3_url = driver.find_element_by_id('mp3_h').text

    if mp3_url:
        print('正在下载……')
        #下载网站数据
        request.urlretrieve(mp3_url,'说好不哭.mp3')

    else:
        print('没有获取到地址')
    print('完毕')
    #退出浏览器
    driver.quit()

if __name__ == '__main__':
    song_url = get_song_url()
    down_song(song_url)