• 利用网易云音乐体会Selenium各种方法的使用


    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()
  • 相关阅读:
    pacx & zr(yet)
    FileInputStream RandomAccessFile FileChannel 与 MappedByteBuffer (yet)
    结合自定义注解的 spring 动态注入
    redis事务与管道区别
    jdk动态代理与cglib优势劣势以及jdk动态代理为什么要interface
    maven scope属性值设置含义
    xc (yet)
    单链表 环
    适配器模式,将老接口的数据给新接口用
    移动硬盘无法拷贝大于4G的文件
  • 原文地址:https://www.cnblogs.com/Lara1798/p/12958105.html
Copyright © 2020-2023  润新知