
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版本中调试通过。啰嗦完了该上代码了。
看完演示过程,我们再来回顾一下操作步骤。 首先是要调用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()来简单代替。

11 2020-12-07
大哥,你的博客模板能分享下吗 回复