IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> selenium学习 -> 正文阅读

[开发测试]selenium学习

selenium

selenium原本使用来做自动化测试的,在爬虫中应用于模拟用户使用浏览器,爬取一些加密复杂的网站,致命缺点就是太慢了。

selenium安装与配置环境

要使用这个模块首先要安装这个模块,在pycharm终端pip可以直接下载。

pip install selenium

安装好模块之后还要下载一个浏览器驱动。根据浏览器不同,下载对应的浏览器驱动。以下均已谷歌浏览器为例。
Google浏览器驱动.
在这里插入图片描述
在这里插入图片描述
根据浏览器版本下载相应版本的浏览器驱动(在谷歌浏览器右上角的三个点里找到帮助–>关于谷歌可以查看自己浏览器的版本),如果找不到版本对应的浏览器驱动,就下载比自己版本低一级的浏览器驱动,照样能用。(如上图,直接下载 94.0.4606.61版本的驱动),点击进去后,按照系统选择下载,windows操作系统都是下载win32版本。下载完成之后直接把驱动移到和python解释器同一级目录下。
在这里插入图片描述
名字只能为这个,记得重命名改成这个:chromedriver(后缀不管)。

selenium基本操作

from selenium.driver import Chrome //根据浏览器导入相应模块,以谷歌为例
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
web = Chrome() //定义一个对象
web.get('https://www.baidu.com') //打开百度
//利用XPATH找到百度的搜索框(f12开发者工具可以查看)
//web.find_element(By.xxx,''),通过xxx方式查找element,后面直接带xxx的值
//By.xxx需要导入By模块
//.send_keys表示向这个element输入一个值'python'
//Key.ENTER表示输入完之后按下回车,使用Keys需要导入对应模块
web.find_element(By.XPATH, '//*[@id="changeCityBox"]/p[1]/a').send_keys('python',Keys.ENTER)

selenium窗口切换

因为selenium默认不切换窗口

web.switch_to.window(web.window_handles[-1])  // 切换到最后一个窗口
web.close() //关闭当前窗口
//当前窗口关闭后,selenium的视角依旧在被关闭的窗口上,所以还需要将它切换回来
web.switch_to.window(web.window_handles[0])

selenium报错(当前只遇到三种,后续补上)

1.elenium.common.exceptions.ElementClickInterceptedException: Message: element click inte
原因:元素定位相互覆盖。
解决方案:js注入
报错代码:

window.find_element(By.XPATH, './div[1]/div[1]/div[1]/a/h3').click()

更改后:

element1 = window.find_element(By.XPATH, './div[1]/div[1]/div[1]/a/h3') 
web.execute_script("arguments[0].click();", element1)

2.selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference
这种代码多半是你的网速太慢,跟不上爬虫爬取的速度,网页还未加载完全,爬虫就开始了爬取工作。这里建议你把电脑拿去转转app卖了或者是导入time模块使用time.sleep()让你的爬虫休眠几秒,等到浏览器加载完成后继续工作。
3.selenium.common.exceptions.NoSuchElementException后面还一串忘了
这个是没有查找到你想要的element,重新检查find_element

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:14:07  更:2021-10-22 11:14:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:51:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码