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

python selenuium 1688商品详情 python selenium教程视频_输入框

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()这是为什么?

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

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