Python Selenium框架

目录

1、selenium介绍
2、selenium安装
3、selenium常用操作
4、QQ空间模拟登陆
5、图片懒加载

1. selenium介绍

# 介绍:
1.selenium是一个web自动化测试用的框架. 程序员可以通过代码实现对浏览器的控制, 比如打开网页, 点 击网页中的元素, 实现鼠标滚动等操作.
2.它支持多款浏览器, 如谷歌浏览器, 火狐浏览器等等, 当然也支持无头浏览器.
# 目的:
在爬取数据的过程中, 经常遇到动态数据加载, 一般动态数据加载有两种, 一种通过ajax请求加载数据, 另 一种通过js代码加载动态数据. selenium可以模拟人操作真实浏览器, 获取加载完成的页面数据

ajax:
    url有规律且未加密, 直接构建url连接请求
    url加密过无法破解规律 --> selenium
js动态数据加载 --> selenium

2. selenium安装

三要素: 浏览器, 驱动程序, selenium框架
    浏览器: 推荐谷歌浏览器, 标准稳定版本 驱动程序:http://chromedriver.storage.googleapis.com/index.html pip install selenium 

# 测试:
from selenium import webdriver
browser = webdriver.Chrome('./chromedriver.exe') # 将驱动放在脚本所在的文件夹
browser.get('https://www.baidu.com')

3. selenium常用操作

# 实例化浏览器对象:
from selenium import webdriver
browser = webdriver.Chrome('driverpath') 

# 发送get请求:
browser.get('https://www.baidu.com')
browser.get('https://image.baidu.com')
# 获取网页的数据: browser.page_source ---> str类型
# 获取页面元素:
find_element_by_id:根据元素的id
find_element_by_name:根据元素的name属性 find_element_by_xpath:根据xpath表达式 find_element_by_class_name:根据class的值 find_element_by_css_selector:根据css选择器

# 节点交互操作:
click(): 点击
send_keys(): 输入内容
clear(): 清空操作
execute_script(js): 执行指定的js代码
# JS代码: window.scrollTo(0, document.body.scrollHeight)可以模拟鼠标滚动一屏高度
quit(): 退出浏览器 

# frame
# 若爬取一个页面,需观察如果有两个HTML(一个父HTML,一个子HTML),所需内容在子HTML中,则需要switch_to.frame('frameid') 转至子页面继续操作

switch_to.frame('frameid')                

4. QQ空间模拟登陆

from selenium import webdriver
import time
# 实例化浏览器对象
browser = webdriver.Chrome('./chromedriver.exe')
# 打开qq空间登陆页面
browser.get('https://qzone.qq.com/')
time.sleep(1)
# 转至frame子页面
browser.switch_to.frame('login_frame')
# 获取密码登陆选项并点击
a_tag = browser.find_element_by_id('switcher_plogin')
a_tag.click()
time.sleep(1)
# 获取账号输入框并输入账号
browser.find_element_by_id('u').clear()
user = browser.find_element_by_id('u')
user.send_keys('1816668038')
time.sleep(1)
# 获取密码输入框并输入密码
browser.find_element_by_id('p').clear()
pwd = browser.find_element_by_id('p')
pwd.send_keys('1971628197192liu')
time.sleep(1)
# 获取登陆按钮并单击
button = browser.find_element_by_id('login_button')
button.click()

'''
微博模拟登陆
'''''
# import requests,time
# from selenium import webdriver
# broeser = webdriver.Chrome('./chromedriver.exe')
# broeser.get('https://weibo.com/login.php')
#
# input_tag = broeser.find_element_by_id('loginname')
# input_tag.clear()
# input_tag.send_keys('15135544556')
# time.sleep(3)
# input_tag_pwd = broeser.find_element_by_xpath('//div[@class="info_list password"]/div[@class="input_wrap"]/input')
# input_tag_pwd.clear()
# input_tag_pwd.send_keys('123456789liu')
# time.sleep(3)
# button_tag = broeser.find_element_by_xpath('//div[@class="W_login_form"]/div[@class="info_list login_btn"]/a')
# button_tag.click()

5. 图片懒加载

'''
网址 http://sc.chinaz.com/tupian/   站长素材
图片懒加载
'''''

import requests
from lxml import etree
url = 'http://sc.chinaz.com/tupian/bingxueshijie.html'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
res = requests.get(url=url,headers=headers)
tree = etree.HTML(res.text)
#src2的位置,在必要的时候可以把值赋给src----懒加载核心
ret = tree.xpath('//div[@id="container"]/div/div/a/img/@src2')

for i in ret:
    comment = requests.get(url=i,headers=headers).content
    name = i.split('/')[-1]
    with open('./image/%s'% name,'wb') as f:
        f.write(comment)

原文地址:https://www.cnblogs.com/xinzaiyuan/p/12382235.html

时间: 2024-08-30 07:23:49

Python Selenium框架的相关文章

《一头扎进》系列之Python+Selenium框架设计篇3- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了

1. 简介 前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了.从本文开始宏哥将会一步一步介绍,如何从无到有地创建自己的第一个自动化测试框架.这一篇,我们介绍,如何封装自己的日志类和浏览器引擎类. 2. 创建项目层级结构 如何创建,怎么创建.这个就需要我们前边介绍的框架概要设计以及框架的详细设计的思维导图,宏哥就是根据那个图,轻松地.清楚的.思路清晰地一步一步创建项目层级结构. 相关步骤: 1. 打开PyCharm,创建如下格式的项目层级结构,为了

《一头扎进》系列之Python+Selenium框架实战篇4- 价值好几K的框架,呵!这个框架有点意思啊!!!

1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到base_page.py这个类文件,以后每个POM中的页面类,都继承这个基类,这样每个页面类都有基类的方法,这个我们会在这篇文章由宏哥实现. 2.项目层级结构 1. 上一篇中我们已经创建好了项目层级结构,具体项目层级结构如下图.这里不再赘述,相关文件也如下: 3. 定位和截图类封装 1. 在实现封装基类里

《一头扎进》系列之Python+Selenium框架设计篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!

1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到suite中去和利用discover()方法去加载一个路径下所有的测试用例. 2. addTest()方法 这里首先介绍unittest下addTest()方法来加载测试用例到测试套件中去.为了演示效果,我在前面文章的脚本基础上,新建了一个测试脚本,这个测试脚本有一个测试用例,加上前面的测试脚本,一

Python+Selenium框架版(七)- 进一步实现POM和可能遇到问题解决方法

目标:实现三个页面,两个测试脚本. 练习场景:新建了2个页面对象:百度新闻首页,百度体育新闻首页,具体文件结构如下图,其他和之前项目层级结构保持不变. 1.百度首页页面类代码(baidu_homepage.py),定义了百度新闻的入口 from framework.base_page import BasePage class HomePage(BasePage): input_box = "id=>" search_submit_btn = "xpath=>//

Python+Selenium搭建UI自动化测试框架

Python语言是非常强大的编程语言,很多时候也拿来当脚本语言用. Selenium是web应用测试工具,支持Java.Python等多种语言脚本,支持Chrome.Firefox等多种主流浏览器.主要实现的就是模拟人使用web应用,自动的打开浏览器.打开应用.进入应用进行各种模拟业务操作等等. 接下来,一步一步带领大家实现下Python+Selenium实现使用脚本自动发微博的功能. 1.Python安装 一般Linux系统自带了Python,Windows系统可以参考本人之前文章 [Pyth

python爬虫-什么时候选择selenium框架框架?

不知不觉已经从事Python编程开发5年了,Python刚开始其实不是很起眼,但是随着大数据越来越活,现在Python也越来越火了,但是目前我主要从事的Python工作还是以数据挖掘.数据爬虫技术深度为主. 下面把这些年个人在编程爬虫代码时用过的一些爬虫框架和爬虫经验给大家分享: 不同的网站选择不通的技术策略和不同的框架组合. ? ? (1)selenium框架: 我把这个框架取了一个名字叫:"无法阻挡爬虫蜘蛛侠",这个框架优点的个人觉得就是可以模拟浏览器,相当于您用程序调动浏览器让浏

python selenium系列(一):框架介绍及安装

一  selenium是什么? 引用百度百科的介绍selenium的一段话: "Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等.这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上.测试系统功能--创建回归测试检验软件功能和用

Python+selenium自动化公共逻辑步骤封装

开篇 个人博客"Python+selenium的GUI自动化实现"提到的chrome与IE浏览器调用插件已上传至51CTO下载,对应链接分别为:chrome,http://down.51cto.com/data/2171584:IE,http://down.51cto.com/data/2171585:有需要的直接下载即可:  正文 关于自动化,其实质就是用机器操作代替手工执行,从而减少人力投入.节约项目运营成功.优秀的自动化框架,可能的一个发展过程,前期自动化用例写作实现过程,可能需

Python selenium的js扩展实现

python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制:对这种涉及页面脚本解析的内容,前面的方式便很无力. 这时我们需要能解析.运行js的引擎——浏览器,而python selenium能提供程序与浏览器的交互接口,再加上phantomjs这个可以后台运行的浏览器,即使用 selenium + phantomjs 便可以解决以上的问题. seleniu