庆云古诗词

庆云古诗词

237马力配2.0T+倒车影像,颜值惊艳,现优惠3.8万

淘文章 0
360°倒车影像价格,倒车影像1+32可以吗,倒车影像720度,倒车影像摄像头像素多少合适

君威在全国范围内都有不同程度的促销活动,其中赤峰市地区的优惠高达3.8万,以下为参与促销车款在赤峰市地区的最低报价以及对应经销商,如果大家想了解详情,请点击询底价与对应经销商进行联系!

车款 厂商指导价 优惠幅度 优惠价 经销商 询价
GS 尊贵型 24.98万 3.8万↓ 21.18万 美和别克4S店 询底价
652T 智享型 21.08万 3.8万↓ 17.28万 美和别克4S店 询底价
552T 智享型 19.68万 3.8万↓ 15.88万 美和别克4S店 询底价
GS 尊贵型 24.98万 3.8万↓ 21.18万 美和别克4S店 询底价
652T 智享型 21.08万 3.8万↓ 17.28万 美和别克4S店 询底价
552T 智享型 19.68万 3.8万↓ 15.88万 美和别克4S店 询底价

最近一年以来,君威 GS 尊贵型在全国范围内的价格变化平稳,最低价格达到22.4万,最高价格达到24.7万,历史平均价格为23.0万。


selenium和scrapy爬虫哪个更好 selenium入门之java爬虫入门

selenium和scrapy哪个好,selenium和scrapy区别,selenium和scrapy,selenium和scrapy框架
展开全文

大家好,我是黄伟

今天带大家一起学(复)习模拟浏览器运行的库,它是一个用于应用程序测试的工具。测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括(7, 8, 9, 10, 11),,,,和等。

这里我将以为例进行功能的演示~

目录:

  • 0. 准备工作

    • 0.1. 安装selenium库

    • 0.2. 安装浏览器驱动

  • 1. 基本用法

    • 1.1. 初始化浏览器对象

    • 1.2. 访问页面

    • 1.3. 设置浏览器大小

    • 1.4. 刷新页面

    • 1.5. 前进后退

  • 2. 获取页面基础属性

  • 3. 定位页面元素

    • 3.1. id定位

    • 3.2. name定位

    • 3.3. class定位

    • 3.4. tag定位

    • 3.5. link定位

    • 3.6. partial定位

    • 3.7. xpath定位

    • 3.8. css定位

    • 3.9. find_element的By定位

    • 3.10. 多个元素

  • 4. 获取页面元素属性

    • 4.1. get_attribute获取属性

    • 4.2. 获取文本

    • 4.3. 获取其他属性

  • 5. 页面交互操作

    • 5.1. 输入文本

    • 5.2. 点击

    • 5.3. 清除文本

    • 5.4. 回车确认

    • 5.5. 单选

    • 5.6. 多选

    • 5.7. 下拉框

  • 6. 多窗口切换

    • 6.1. Frame切换

    • 6.2. 选项卡切换

  • 7. 模拟鼠标操作

    • 7.1. 左键

    • 7.2. 右键

    • 7.3. 双击

    • 7.4. 拖拽

    • 7.5. 悬停

  • 8. 模拟键盘操作

  • 9. 延时等待

    • 9.1. 强制等待

    • 9.2. 隐式等待

    • 9.3. 显式等待

  • 10. 其他

    • 10.1. 运行JavaScript

    • 10.2. Cookie

    • 10.3. 反屏蔽

0. 准备工作

在开始后续功能演示之前,我们需要先安装浏览器并配置好,当然也需要安装库!

其实,有两种方式安装浏览器驱动:一种是常见的手动安装,另一种则是利用第三方库自动安装。

以下前提:大家都已经安装好了浏览器哈

手动安装

先查看本地浏览器版本:(两种方式均可)

  • 在浏览器的地址栏键入,即可查看浏览器版本号
  • 或者点击菜单 帮助关于Google Chrome,查看浏览器版本号

再选择对应版本号的驱动版本

下载地址:/index.html

最后进行环境变量配置,也就是将对应的的可执行文件文件拖到的目录下。

注:当然也可以不这样做,但是在调用的时候指定绝对路径亦可。

自动安装

自动安装需要用到第三方库,先安装这个库,然后调用对应的方法即可。

在上述代码中,方法就是自动安装驱动的操作,它会自动获取当前浏览器的版本并去下载对应的驱动到本地。

如果本地已经有该浏览器渠道,则会提示其已存在。

搞定以上准备工作,我们就可以开始本文正式内容的学习啦~

1. 基本用法

这节我们就从初始化浏览器对象、访问页面、设置浏览器大小、刷新页面和前进后退等基础操作。

在准备工作部分我们提到需要将浏览器渠道添加到环境变量或者指定绝对路径,前者可以直接初始化后者则需要进行指定。

初始化浏览器对象

可以看到以上是有界面的浏览器,我们还可以初始化浏览器为无界面的浏览器

截图

完成浏览器对象的初始化后并将其赋值给了对象,接下来我们就可以调用来执行各种方法模拟浏览器的操作了。

进行页面访问使用的是方法,传入参数为待访问页面的地址即可。

方法可以用来设置浏览器大小(就是分辨率),而则是设置浏览器为全屏!

这里就不截图了,大家自行演示看效果哈~

刷新页面是我们在浏览器操作时很常用的操作,这里方法可以用来进行浏览器页面刷新。

大家也是自行演示看效果哈,同快捷键。

前进后退也是我们在使用浏览器时非常常见的操作,这里方法可以用来实现前进,可以用来实现后退。

2. 获取页面基础属性

当我们用打开某个页面,有一些基础属性如网页标题、网址、浏览器名称、页面源码等信息。

输出如下:

需要注意的是,这里的页面源码我们就可以用、、以及等工具进行解析提取想要的信息了。

3. 定位页面元素

我们在实际使用浏览器的时候,很重要的操作有输入文本、点击确定等等。对此,提供了一系列的方法来方便我们实现以上操作。常说的定位页面元素的操作方式,我们一一演示一下!

我们以百度首页的搜索框节点为例,搜索python

搜索框

搜索框的结构:

根据属性获取,这里属性是

根据属性获取,这里属性是

根据属性获取,这里属性是

我们知道是通过来定义功能的,比如是输入,是表格等等。每个元素其实就是一个,一个往往用来定义一类功能,我们查看百度首页的代码,可以看到有很多同类,所以其实很难通过去区分不同的元素。

由于存在多个,以上代码会报错。

这种方法顾名思义就是用来定位文本链接的,比如百度首页上方的分类模块链接。

以新闻为例

有时候一个超链接的文本很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了。

前面介绍的几种定位方法都是在理想状态下,有一定使用范围的,那就是:在当前页面中,每个元素都有一个唯一的或或或的属性,那么我们就可以通过这个唯一的属性值来定位他们。

但是在实际工作中并非有这么美好,那么这个时候我们就只能通过或者来定位了。

这种方法相对要简洁些,定位速度也要快些。

除了上述的种定位方法,还提供了一个通用的方法,这个方法有两个参数:定位方式和定位值。

以上的操作可以等同于以下:

如果定位的目标元素在网页中不止一个,那么则需要用到,得到的结果会是列表形式。简单来说,就是后面多了复数标识,其他操作一致。

4. 获取页面元素属性

既然我们有很多方式来定位页面的元素,那么接下来就可以考虑获取以下元素的属性了,尤其是用进行网络爬虫的时候。

以百度首页的logo为例,获取logo相关属性

获取logo的图片地址

输出:

以热榜为例,获取热榜文本和链接

获取热榜的文本,用的是属性,直接调用即可

输出:

除了属性和文本值外,还有id、位置、标签名和大小等属性。

输出:

5. 页面交互操作

页面交互就是在浏览器的各种操作,比如上面演示过的输入文本、点击链接等等,还有像清除文本、回车确认、单选框与多选框选中等。

其实,在之前的小节中我们有用过此操作。

同样,我们也用过这个点击操作。

既然有输入,这里也就有清除文本啦。

比如,在搜索框输入文本,然后回车就出查询操作结果的情况。

单选比较好操作,先定位需要单选的某个元素,然后点击一下即可。

多选好像也比较容易,依次定位需要选择的元素,点击即可。

下拉框的操作相对复杂一些,需要用到模块。

先导入该类

在模块中有以下定位方法

我们来进行演示一波,由于暂时没找到合适的网页,我这边写了一个简单的网页本地测试(文件存为 帅哥.html)

然后,再演示下拉框的不同选择的方式

下拉框

6. 多窗口切换

比如同一个页面的不同子页面的节点元素获取操作,不同选项卡之间的切换以及不同浏览器窗口之间的切换操作等等。

打开一个页面之后,默认是在父页面进行操作,此时如果这个页面还有子页面,想要获取子页面的节点元素信息则需要切换到子页面进行擦走,这时候就来了。如果想回到父页面,用即可。

我们在访问网页的时候会打开很多个页面,在中提供了一些方法方便我们对这些页面进行操作。

:获取当前窗口的句柄。

:返回当前浏览器的所有窗口的句柄。

:用于切换到对应的窗口。

7. 模拟鼠标操作

既然是模拟浏览器操作,自然也就需要能模拟鼠标的一些操作了,这里需要导入 类。

这个其实就是页面交互操作中的点击操作。

在上述操作中

:调用类,并将浏览器驱动作为参数传入

:模拟鼠标双击,需要传入指定元素定位作为参数

:执行中储存的所有操作,可以看做是执行之前一系列的操作

拖拽操作嘛,开始位置和结束位置需要被指定,这个常用于滑块类验证码的操作之类。

我们以菜鸟教程的一个案例来进行演示

【【网址】】/try/try.php?filename=j【【微信】】e

拖拽
悬停效果

8. 模拟键盘操作

中的类提供了大部分的键盘操作方法,通过方法来模拟键盘上的按键。

引入类

常见的键盘操作

:删除键(BackSpace)

:空格键(Space)

:制表键(TAB)

:回退键(ESCAPE)

:回车键(ENTER)

:全选(Ctrl+A)

:复制(Ctrl+C)

:剪切(Ctrl+X)

:粘贴(Ctrl+V)

:键盘F1

.....

:键盘F12

实例操作演示:

定位需要操作的元素,然后操作即可!

9. 延时等待

如果遇到使用加载的网页,页面元素可能不是同时加载出来的,这个时候尝试在方法执行完成时获取网页源代码可能并非浏览器完全加载完成的页面。所以,这种情况下需要设置延时等待一定时间,确保全部节点都加载出来。

三种方式可以来玩玩:强制等待、隐式等待和显式等待

就很简单了,直接强制等待n秒,在执行方法之后执行。

设置等待时间,如果到时间有元素节点没有加载出来,就会抛出异常。

设置一个等待时间和一个条件,在规定时间内,每隔一段时间查看下条件是否成立,如果成立那么程序就继续执行,否则就抛出一个超时异常。

WebDri【【微信】】的参数说明

: 浏览器驱动

: 超时时间,等待的最长时间(同时要考虑隐性等待时间)

: 每次检测的间隔时间,默认是0.5秒

:超时后的异常信息,默认情况下抛出异常

until(method,message='')

: 在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False

: 如果超时,抛出,将传入异常

until_not(method,message='')

相反,是当某元素出现或什么条件成立则继续执行,是当某元素消失或什么条件不成立则继续执行,参数也相同。

其他等待条件

10. 其他

补充一些

还有一些操作,比如下拉进度条,模拟,使用方法来实现。

在使用过程中,还可以很方便对进行获取、添加与删除等操作。

输出:

发现美团直接给给屏蔽了,不知道怎么搞!!

以上就是本次全部内容,如果觉得有帮助,还请点赞+在看呀!

后续我们将演示在爬虫以及web自动化方面的一些实战案例,敬请期待!