前面几篇介绍了下Selenium干什么用的,怎么安装Selenium和WebDriver,这篇就来个简单演示程序让它run起来,看代码领会精神是比较直接的。

Python Selenium的运行原理

上代码前,再啰嗦下Selenium是怎么运行起来,跟WebDriver是什么关系。

我们安装的Selenium Python库提供了一系列接口(API),比如鼠标点击,拖动,填写输入框等等。

上一篇我们安装的WebDriver是chrome浏览器的chromedriver,是用来跟浏览器保持通信,就是当你调用API时,要靠这个driver来把消息传递给浏览器,浏览器才能响应你。

当你运行程序后,driver会以进程的方式常驻在内存中,如果是windows用户,你在任务管理器的进程中会看到chromedriver.exe这个进程。

Python Selenium演示程序

我们使用浏览器一般会做以下几件事情:

1.打开一个网页

2.鼠标在页面上滑动 **

**3.点击一个链接

4.在不同网页(tab)间切换

5.在表单(输入框)中填写信息,并提交

6.打开网页后,希望能自动读取cookies(实现自动登录等行为)

我们来写段小程序演示一下1,2,3,5,至于切换tab和cookies管理我们另开文章说明。这段程序演示打开猿人学首页,并来回滑动页面,然后点击页面右上角的搜索图标,输入“Python教程”后回车。

代码在Python3.6版本中调试通过。啰嗦完了该上代码了。

#coding=utf-8

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import time

#打开Chrome浏览器

driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")

#浏览器最大化

driver.maximize_window()

#打开猿人学首页

driver.get('https://www.yuanrenxue.com')

time.sleep(3)

#滑动到页面中间处

driver.execute_script("window.scrollTo(0,document.body.scrollHeight/2)")

time.sleep(3)

#滑动到页面最下方

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

time.sleep(3)

#滑动到页面最上方

driver.execute_script("window.scrollTo(0,0)")

time.sleep(3)

#通过html的class属性来定位链接位置,并点击

driver.find_element_by_class_name('slide-left').click()

time.sleep(3)

#定位页面右上角的搜索图标并点击

driver.find_element_by_class_name('search-show').click()

#找到输入框

search = driver.find_element_by_class_name("search-input")

#输入 Python教程

search.send_keys(u'python教程')

time.sleep(7)

#回车

search.send_keys(Keys.RETURN)

time.sleep(5)

driver.quit()

看完演示过程,我们再来回顾一下操作步骤。

首先是要调用Chrome()方法打开浏览器。

然后是调用get()方法打开猿人学网站。

剩下的事情就是开始模拟鼠标和键盘行为了。

页面滑动是靠执行JS代码来实现的,那个代码可以直接拷贝使用。

点击链接前,你先要定位到这个元素(链接),怎么定位元素?

我们上面的例子是靠找html class属性来实现的,调用的find_element_by_class_name()方法来定位元素的class name, 还可以靠xpath,靠css,靠class id来定位,这都要针对你具体的网站来选择,选择依据就是怎么方便怎么来,后面我们再具体聊这块,具体的我们在下一篇文章中聊。

向输入框中输入字符并回车也很简单。

先定位到输入框,然后调用send_keys()方法输入。

注意这里只能输入unicode,输utf,gbk编码字符串是要报错的。

总结:

1.上面所有的函数调用都是从 from selenium import webdriver 这个包里调用的,我们要操作的相关API基本都在这里面。

2.点击链接,在输入框里输入字符等操作,要先定位到这个元素处。

3.定位元素的方法有很多:xpath ,css ,class id,class name都可以。

4.程序运行完了要记得调用driver.quit()退出,不然chromedriver.exe进程不会自己退出,反复这样运行程序的话,内存里就会有好几个chromedriver.exe。

思考:

上面每个几行代码我都加了time.sleep()这是为什么?

一个原因是为了演示流程更清晰,在每个操作步骤处停留几秒,观看更清楚。

第二个原因是:我们知道打开一个网页后浏览器会加载一段时间,根据网络情况,加载时间有快有慢,在资源还没有加载完的情况下,我们去定位元素有可能是定位不到的,这时就会报错。所以让它停留一段时间来加载资源。

其实selenium是有自己的等待函数的,这里先用time.sleep()来简单代替。

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.com 原创,没有猿人学授权,请勿以任何形式转载。***

python简单代码演示效果-Python Selenium的简单演示程序相关推荐

  1. python简单代码演示效果-python制作演示动画

    先看效果图 sin_cos.gif 循序渐进 一个超级简单的绘图示例: sample1.png import numpy as np import matplotlib.pyplot as plt i ...

  2. python简单代码演示效果-演示python如何创建和使用一个简单的元类的代码

    在做工程闲暇时间,将做工程过程比较重要的一些内容备份一下,如下内容段是关于演示python如何创建和使用一个简单的元类的内容,应该能对小伙伴们也有用途. #!/usr/bin/env python # ...

  3. python简单代码演示效果-用python画爱心及代码演示

    程序员在爱情方式上表达上展现的多种多样,其中现在大火的用编程去编写个表白内容,最受欢迎了,今天小编也尝试了下,一起来看看吧~ 准备工具:python3 画爱心实施步骤: 打开编译器,写上code,代码 ...

  4. python简单代码演示效果-10分钟教你用python 30行代码搞定简单手写识别!

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 手写笔记还是电子笔记好呢? 毕业季刚结束,眼瞅着2018级小萌新马上就要来了,老腊肉小编为了咱学弟学妹们的学习,绞尽脑汁准备编一套大学秘籍, ...

  5. python新手代码大全.pdf,python新手代码及作用

    python新手代码是什么? python新手代码是:1.------数字提取.2.------长ping 检测网络状态.3.------爬取百度贴吧图片.4.------微信自动回复天气.5.--- ...

  6. python打完代码怎么运行-Python的代码是如何去进行运行的?

    近年来,Python语言迅速崛起,其简洁.免费.易学习.兼容性好等特点以及其面向对象.函数式编程.过程编程.面向方面编程,受到众人的喜爱.与其他编程程序的语言基本相同,Python也是需要在相应的程序 ...

  7. python编写代码_用 Python 编写干净、可测试、高质量的代码

    用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...

  8. python初学者代码-Python-为什么Python是初学者的完美选择?

    原标题:Python-为什么Python是初学者的完美选择? 在过去的两年中,Python部落已经教会了成百上千个开发人员学会了他们的第一个编程语言.我们一直关注的一件事就是为一个初学程序员找到最好的 ...

  9. python樱花代码_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例

    今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...

最新文章

  1. boot定时任务开启和关闭 spring_SpringBoot中的定时任务的同步与异步你确定真的知道?...
  2. LeetCode Mini Parser(栈操作)
  3. 红黑树(一)之 原理和算法详细介绍
  4. ---------愿 青春与我皆不付---------------------
  5. 【Cocos新手入门】cocos creator + Visual Studio 做游戏开发的基础教程
  6. java 反射抽象_Java实现抽象工厂模式+java的反射的机制
  7. 基于Velocity的Web开发指南
  8. 王庆的边缘计算(第四章)
  9. 为什么有的PLC需要上电停止功能,能防止PLC变砖,可编程控制器 上电停止 串口通信 梯形图
  10. 从零开始开发HybridApp
  11. matlab遗传算法求解车辆路径问题(一)
  12. 基于SpringBoot的宠物医院管理系统
  13. 深度优先遍历和广度优先遍历
  14. python幂次_python n次幂
  15. 求圆外一点做圆切线的切点坐标(算法)
  16. [原] Python 根据设备编号获取设备名称
  17. TJA1050 引脚
  18. 探索“吴家路径”:一条带动村民共同富裕,有效促乡村善安治之路
  19. 从“快稳省安全”看Chromium——Chromium学习系列
  20. 炒菜,我把厨房烧了!

热门文章

  1. 如何居中一个元素(终结版)
  2. suse11/12关闭防火墙
  3. instantclient_11_2 连接oracle数据
  4. Pair Testing
  5. C++类功能扩展预留五招
  6. 用BenchmarkDotNet给C#程序做性能测试
  7. 用dos命令给mysql数据库新建表
  8. Backlog和冲刺结果以及产品Demo市场调研
  9. 《编写高质量代码:改善Java程序的151个建议》笔记
  10. PE格式详细讲解4 - 系统篇04|解密系列