selenium实现自动播放音乐

1-5节来自哔哩哔哩:selenium框架

1. 什么是selenium

​ Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。

2. PhantomJS的介绍

​ PhantomJS 是一个基于Webkit的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 JavaScript

3 . Chromedriver的介绍

​ Chromedriver 也是一个能够被selenium驱动的浏览器,但是和PhantomJS的区别在于它是有界面的

4. selenium的基本使用

  1. selenium的导包:from selenium import webdriver
  2. selenium创建driver对象:webdriver.PhantomJS()
  3. selenium请求数据:driver.get("http://www.baidu.com/")
  4. selenium查看数据: driver.page_source
  5. 关闭无界面浏览器: driver.quit()
  6. 根据id定位元素: driver.find_element_by_id(“kw”)
  7. 操作点击事件: click()
  8. 给输入框赋值:send_keys()
  9. 根据xpath定位元素:driver.find_elements_by_xpath("//*[@id='s']/h1/a")
  10. 根据class定位元素:driver.find_elements_by_class_name("box")
  11. 根据link_text定位元素:driver.find_elements_by_link_text("下载豆瓣 App")
  12. 根据tag_name定位元素:driver.find_elements_by_tag_name("h1")
  13. 获取文本内容:element.text
  14. 获取标签属性: element.get_attribute("href")
  15. 切换窗口:switch_to.window()
  16. 切换iframe: switch_to.frame()
  17. 进入嵌套网页:driver.switch_to.frame()
  18. 页面前进:driver.forward()
  19. 页面后退:driver.back()
  20. 关掉页面(1)和关掉窗口(2)不同
from selenium import webdriver
if __name__ == '__main__':
    # 1.创建浏览器  --> 对象
    # PhantomJS  无头浏览器 --selenium版本更新之后,对PhantomJS不再更新,使用报警告
    # driver = webdriver.PhantomJS(executable_path='C:\\python3.6\\phantomjs-2.1.1-windows\\bin\phantomjs.exe')
    driver = webdriver.Chrome()

    # 2.发送请求
    driver.get('https://www.baidu.com/')

    # 截取页面屏幕
    driver.save_screenshot('baidu.png')

    # 3.查看请求的数据
    print(driver.page_source)  # 查看渲染后的数据
    print(driver.get_cookies())  # 查看请求页面后的cookies值
    print(driver.current_url)  # 查看请求的url

    # 4.关闭浏览器(页面)
    # driver.close()
    # driver.quit()

4.1 selenium元素定位的方法

通过selenium的基本使用可以简单定位元素和获取对应的数据,接下来我们再来学习下 定位元素的其他方法

find_elements_by_id #(根据id属性值获取元素列表)
find_elements_by_class_name #(根据类名获取元素列表)
find_elements_by_xpath #(返回一个包含元素的列表)
find_elements_by_link_text #(根据标签的文本获取元素列表,精确定位)
find_elements_by_partial_link_text #(根据标签包含的文本获取元素列表,模糊定位)
find_elements_by_tag_name #(根据标签名获取元素列表)

在这里插入图片描述
在这里插入图片描述

4.2 selenium的其他方法

  • switch方法切换浏览器窗口的操作

    一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。切换窗口的方法如下:

  # 1. 获取当前所有的窗口
  current_windows = driver.window_handles
  # 2. 根据窗口索引进行切换
  driver.switch_to.window(current_windows[1])
  • switch方法实现页面的前进后退
  driver.forward()     # 前进
  driver.back()        # 后退
  • switch_to进入嵌套网页
    iframe是html中常用的一种技术,即一个页面中嵌套了另一个网页,selenium默认是访问不了frame中的内容的,对应的解决思路是driver.switch_to.frame()

在这里插入图片描述

5. 自动播放音乐

# -*- coding:utf-8 -*-
from selenium import webdriver
import time

url = "https://music.163.com/"
# 1. 创建浏览器对象
chrome_opt = webdriver.ChromeOptions()     # 创建参数设置对象.
chrome_opt.add_argument('--window-size=1366,768')   # 设置窗口大小, 窗口大小会有影响.
driver = webdriver.Chrome(chrome_options=chrome_opt)
# 2. 发送请求
driver.get(url)

# 3. 登录过程
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[1]/a').click()#点击登陆
time.sleep(2)
driver.find_element_by_xpath('//*[@id="otherbtn"]/a').click()
time.sleep(2)
driver.find_element_by_xpath('//*[@id="j-official-terms"]').click()#点击同意条款 
time.sleep(2)
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[1]/div[1]/div[1]/div[2]/a').click()#手机号登陆
time.sleep(2)
driver.find_element_by_xpath('//*[@id="p"]').send_keys('1510*66*73')#手机号
time.sleep(2)
driver.find_element_by_xpath('//*[@id="pw"]').send_keys('fe**14')#密码
time.sleep(2)
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[1]/div[5]/a').click()#点击登陆
time.sleep(2)
driver.find_element_by_xpath('//*[@id="g-topbar"]/div[1]/div/ul/li[2]/span/a/em').click()#我的音乐
#通过switch_to_frame()将当前定位切换到frame/iframe表单的内嵌页面中
driver.switch_to_frame(driver.find_element_by_class_name('g-iframe'))
time.sleep(2)
driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div[1]/div[1]/div/div[2]/div/div[3]/a[1]').click()#播放音乐
time.sleep(10)
driver.close() #关闭当前标识的窗口
#driver.quit()#关掉页面
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值