Selenium使用Chrome模拟手机浏览器方法解析


Posted in Python onApril 10, 2020

在使用Chrome浏览网页时,我们可以使用Chrome开发者工具模拟手机浏览器,在使用Selenium操作Chrome时同样也可以模拟手机浏览器。主要有以下两种用途。

测试H5页面在不同分辨率设备上的显示情况是否正常爬取数据(一般网站对移动设备浏览的反爬教弱)使用指定设备

操作方法非常简单,在ChromeOptions()浏览器选项,添加实验选项,mobileEmulation选项中通过devicename指定选择的设备即可,操作代码如下。

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('mobileEmulation', {'deviceName': 'iPhone X'}) # 模拟iPhone X浏览
driver = webdriver.Chrome(options=options)
driver.get('http://m.baidu.com')

操作效果如下图:

Selenium使用Chrome模拟手机浏览器方法解析

Chrome开发者工具中已经设置好的设备类型非常多,可以在开发者工具->Settings->Devices中查看,如下图:

Selenium使用Chrome模拟手机浏览器方法解析

使用自定义设备

mobileEmulation除了可以通过deviceName指定设备之外,还可以通过deviceMetrics指定设备指标,一般设备指标包含

  • width: 设备宽度
  • height: 设备高度
  • piexelRatio: 设备像素密度
  • userAgent:设备浏览器标识

使用示例如下:

from selenium import webdriver
options = webdriver.ChromeOptions()

options.add_experimental_option('mobileEmulation', 
  {'deviceMetrics':{'width': 320, 
           'height': 640, 
           'piexelRatio': 3.0, 
           'userAgent': 'Mozilla/5.0 (Linux; Android 4.1.1; GT-N7100 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/35.0.1916.138 Mobile Safari/537.36 T7/6.3'
           }
  }
  )

driver = webdriver.Chrome(options=options)
driver.get('http://m.baidu.com')

当然如果只需要测试不同分辨率的话也可以只设置width和height值。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python实现全角半角字符互转的方法
Nov 28 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
Django框架创建项目的方法入门教程
Nov 04 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
Python 如何解决稀疏矩阵运算
May 26 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 #Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 #Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 #Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 #Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 #Python
Python装饰器的应用场景代码总结
Apr 10 #Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 #Python
You might like
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python如何实现的二分查找算法
2020/05/27 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
高考自主招生自荐信
2013/10/20 职场文书
一封普通求职者的求职信
2013/11/20 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android