您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

什么是Selenium:Web自动化测试工具,提高你的工作效率

时间:2023-09-11 11:07:38  来源:书圈  作者:

什么是Selenium

01

模拟浏览器:Selenium

我们知道,网页会使用JAVA加载数据,对应于这种模式,可以通过分析数据接口来进行直接抓取,这种方式需要对网页的内容、格式和Java代码有所研究才能顺利完成。但有时还会碰到另外一些页面,这些页面同样使用AJAX技术,但是其页面结构比较复杂,很多网页中的关键数据由AJAX获得,而页面元素本身也使用Java来添加或修改,甚至于人们感兴趣的内容在原始页面中并不出现,需要进行一定的用户交互(如不断下拉滚动条)才会显示。对于这种情况,为了方便,就会考虑使用模拟浏览器的方法来进行抓取,而不是通过“逆向工程”去分析AJAX接口,使用模拟浏览器的方法,特点是普适性强,开发耗时短,抓取耗时长(模拟浏览器的性能问题始终令人忧虑),使用分析AJAX的方法,特点则刚好与模拟浏览器相反,甚至在同一个网站、同一个类别中的不同网页上,AJAX数据的具体访问信息都有差别,因此开发过程投入的时间和精力成本是比较大的。如果碰到页面结构相对复杂或者AJAX数据分析比较困难(如数据经过加密)的情况,就需要考虑使用浏览器模拟的方式了。

Python/ target=_blank class=infotextkey>Python模拟浏览器进行数据抓取方面,Selenium永远是绕不过去的一个坎。Selenium(意为化学元素“硒”)是浏览器自动化工具,在设计之初是为了进行浏览器的功能测试。Selenium的作用,直观地说,就是使得操纵浏览器进行一些类似普通用户的操作成为可能,如访问某个地址、判断网页状态、单击网页中的某个元素(按钮)等。使用Selenium来操控浏览器进行的数据抓取其实已经不能算是一种“爬虫”程序,一般谈到爬虫,自然想到的是独立于浏览器之外的程序,但无论如何,这种方法有助于解决一些比较复杂的网页抓取任务,由于直接使用了浏览器,麻烦的AJAX数据和Java动态页面一般都已经渲染完成,利用一些函数,完全可以做到随心所欲地抓取,加之开发流程也比较简单,因此有必要进行基本的介绍。

Selenium本身只是个工具,而不是一个具体的浏览器,但是Selenium支持包括Chrome和Firefox在内的主流浏览器。为了在Python中使用Selenium,需要安装selenium库(仍然通过pip install selenium的方式进行安装)。完成安装后,为了使用特定的浏览器,可能需要下载对应的驱动。将下载到的文件放在某个路径下。并在程序中指明该路径即可。如果想避免每次配置路径的麻烦,可以将该路径设置为环境变量,这里就不再赘述了。

通过一个访问百度新闻站点的例子来引入selenium库,代码如下:

运行上面的代码,会看到Chrome程序被打开,浏览器访问了百度首页,然后跳转到了百度新闻页面,之后又选择了该页面的第一个头条新闻,从而打开了新的新闻页。一段时间后,浏览器关闭并退出。控制台会输出“百度一下,你就知道”(对应browser.title)和http://news.bAIdu.com/(对应browser.current_url)。这无疑是一个好消息,如果能获取对浏览器的控制权,那么爬取某一部分的内容会变得如臂使指。

另外,selenium库能够提供实时网页源码,这使得通过结合Selenium和BeautifulSoup(以及其他上文所述的网页元素解析方法)成为可能,如果对selenium库自带的元素定位API不甚满意,那么这会是一个非常好的选择。总的来说,使用selenium库的主要步骤如下。

① 创建浏览器对象,即使用类似下面的语句:

② 访问页面,主要使用browser.get方法,传入目标网页地址。

③ 定位网页元素,可以使用selenium自带的元素查找API,即

还可以使用browser.page_source获取当前网页源码并使用BeautifulSoup等网页解析工具定位:

④ 网页交互,对元素进行输入、选择等操作。如访问豆瓣并搜索某一关键字(效果见图1-9)的代码如下。

■ 图1-9使用Selenium操作Chrome进行豆瓣搜索的结果

在导航(窗口中的前进与后退)方面,主要使用browser.back和browser.forward两个函数。

⑤ 获取元素属性。可供使用的函数方法很多,例如:

之前曾对Selenium的基本使用做过简单的说明,有了网站交互(而不是典型爬虫程序避开浏览器界面的策略)还能够完成很多测试工作,如找出异常表单、html排版错误、页面交互问题。



Tags:Selenium   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
什么是Selenium01模拟浏览器:Selenium我们知道,网页会使用Java加载数据,对应于这种模式,可以通过分析数据接口来进行直接抓取,这种方式需要对网页的内容、格式和Java代码有所研究...【详细内容】
2023-09-11  Tags: Selenium  点击:(0)  评论:(0)  加入收藏
1、思路1.使用selenium登陆163邮箱2.自动发送邮件到qq邮箱2、完整代码from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsf...【详细内容】
2022-11-21  Tags: Selenium  点击:(248)  评论:(0)  加入收藏
一般来说软件开发相关企业都会有自己内部的源代码管理工具,比如私有部署的gitlab服务器。特别是企业上规模之后会有多个产品线,各个业务产品线各自的项目解决方案会非常多。以...【详细内容】
2022-11-16  Tags: Selenium  点击:(172)  评论:(0)  加入收藏
前言本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享。框架采用python3 + selenium3 + PO + yaml + ddt + unittest等技术编写成基础测试框架,能适应日常测...【详细内容】
2022-08-22  Tags: Selenium  点击:(178)  评论:(0)  加入收藏
遇到网页加载慢,selenium运行效率降低,可以通过修改页面加载策略提升自动化效率。selenium加载很慢通过URL导航到新页面时,默认情况下,Selenium将等待文档完全被加载才会执行下...【详细内容】
2022-07-30  Tags: Selenium  点击:(738)  评论:(0)  加入收藏
首先你得知道什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、...【详细内容】
2022-05-10  Tags: Selenium  点击:(151)  评论:(0)  加入收藏
Selenium 操作被屏蔽使用selenium自动化网页时,有一定的概率会被目标网站识别,一旦被检测到,目标网站会拦截该客户端做出的网页操作。比如淘宝和大众点评的登录页,当打开浏览器,...【详细内容】
2022-04-06  Tags: Selenium  点击:(224)  评论:(0)  加入收藏
前言目前是直播行业的一个爆发期,由于国家对直播行业进行整顿和规范,现在整个直播行业也在稳固发展。随着互联网和网络直播市场的快速发展,相信未来还有广阔的发展前景。今天用...【详细内容】
2022-03-15  Tags: Selenium  点击:(213)  评论:(0)  加入收藏
第一步:pip install selenium 第二步:查看自己的谷歌浏览器版本 第三步:浏览器输入chromedriver mirror,查找与自己谷歌浏览器版本最相近的压缩包,但不能超过该版本。 因为...【详细内容】
2022-02-08  Tags: Selenium  点击:(425)  评论:(0)  加入收藏
相比于高大上的各种Selenium进阶指南,个人认为夯实基础至关重要在Selenium测试框架的API中,主要分为三大类:1.对浏览器本身的相关操作2.对浏览器页面中,元素的定位操作3.对浏览...【详细内容】
2021-07-08  Tags: Selenium  点击:(315)  评论:(0)  加入收藏
▌简易百科推荐
什么是Selenium01模拟浏览器:Selenium我们知道,网页会使用Java加载数据,对应于这种模式,可以通过分析数据接口来进行直接抓取,这种方式需要对网页的内容、格式和Java代码有所研究...【详细内容】
2023-09-11    书圈  Tags:Selenium   点击:(0)  评论:(0)  加入收藏
在现代软件开发中,团队合作是不可或缺的一部分。为了确保代码质量、减少错误以及促进知识共享,代码审查和合并请求成为了开发团队中的关键实践。在本文中,我们将深入探讨代码审...【详细内容】
2023-09-09  高级互联网架构  今日头条  Tags:代码   点击:(5)  评论:(0)  加入收藏
在现代软件开发中,应用程序的性能是一个至关重要的因素,直接影响用户体验和业务成功。为了确保应用的高性能和稳定性,性能监测与优化成为了不可或缺的环节。本文将深入探讨性能...【详细内容】
2023-09-09  在现代软件开发中,应用程序的性能是一个至关重要的因素,直接影  今日头条  Tags:性能监测   点击:(5)  评论:(0)  加入收藏
译者 | 李睿审校 | 重楼API可以返回大量的数据,这使得开发人员很难只检索他们需要的信息。这就是API的过滤和排序功能的用武之地。过滤和排序是API设计的两个基本功能,它们允...【详细内容】
2023-09-09    51CTO  Tags:API   点击:(5)  评论:(0)  加入收藏
API(应用程序接口)是一种允许不同应用程序之间交换数据和功能的软件接口。API的性能是指API响应请求的速度和效率。API性能对于提供高质量的用户体验和服务可用性至关重要。...【详细内容】
2023-09-08  奔跑的三角龙  今日头条  Tags:API   点击:(5)  评论:(0)  加入收藏
什么叫做Flink的有状态计算呢?说白了就是将之前的中间结果暂时存储起来,等待后续的事件数据过来后,可以使用之前的中间结果继续计算。本文主要介绍Flink状态计算和管理、代码示...【详细内容】
2023-09-08  不焦躁的程序员  微信公众号  Tags:Flink   点击:(7)  评论:(0)  加入收藏
如今90%以上的《财富》1000强企业使用微软Active Directory用于身份和访问管理,因此它成为世界上最常见的软件之一。遗憾的是,这种普遍性也使得Active Directory成为吸引网络...【详细内容】
2023-09-08    嘶吼网  Tags:Active Directory   点击:(6)  评论:(0)  加入收藏
前几天 Gateway API 宣布在 0.8.0 中支持服务网格[1],这意味着 GAMMA[2](Gateway API for Mesh Management and Administration)有了新进展,虽然目前还是实验阶段。去年 6 月 Ga...【详细内容】
2023-09-08  云原生指北  微信公众号  Tags:API   点击:(5)  评论:(0)  加入收藏
有时候,当我调试一个问题的时候,我会特意忽略掉某些线程。这个时候,有人就问了:”这些线程是干什么的?你为什么知道要忽略它们?”我的回答是:我也不清楚这些线程是干啥的,但是无论它...【详细内容】
2023-09-08    漫漫开发路  Tags:Bug   点击:(6)  评论:(0)  加入收藏
译者 | 刘汪洋审校 | 重楼概括:这篇文章分享了作者在使用 GitHub Actions 作为 CI/CD 工具时遇到的一些问题和解决方案,包括如何避免重复代码、如何管理环境变量、如何使用缓...【详细内容】
2023-09-08    51CTO  Tags:GitHub Actions   点击:(5)  评论:(0)  加入收藏
站内最新
站内热门
站内头条