Selenium 是一个Web的自动化测试工具,最初是为网站自动化测试而开发的。类型像我们玩游戏用的按键精灵,可以按指定的命令自动化操作,不同是Selenium可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。

Selenium可以根据我们的指令,让浏览器自动加载页面,获取需要的页面,甚至页面截屏,或者判断网站某些动作是否发生。

Selenium自己不带浏览器,不支持浏览器的功能。它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们使用一个加PhantomJS的工具代替真实的浏览器。

可以从PyPI网站下载Selenium库pypi.python.org/simple/sule…,也可以用第三方管理器pip命令安装:pip install seleniumSelenium官方参考文档:selenium-python.readthedocs.io/index.html

PhantomJS

PhantomJS 是一个基于Webkit的“无界面”(headless)L浏览器,他会把网站加载到内存并执行页面上的JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器更高效。

如果我们把Selenium和PhantomJS结合在一起,就可以运行一个非常强大的网络爬丑,这个爬虫可以处理JavaScript、Cookie、headers,以及任何我们真实用户需要做的事情。




python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变


快速入门

Selenium库里有一个叫WebDriver的API。WebDriver 可以控制浏览器的操作,它可以想BeautifulSoup或者其他的Selector对象一样用来查找页面的元素,与页面上的元素进行交互(发送文本、点击等),以及执行其他动作来运行网络爬虫。


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python webdriver点击指令_02


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_03


页面操作

Selenium的WebDriver提供了各种方法来寻找元素,假设下面有一个表单输入框:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_04


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python webdriver点击指令_05


定位UI元素(WebElements)

关于元素的选取,有如下的API单个元素选取


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium爬虫_06


1.By ID


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_07


实现


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_08


---------or-------


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_09


2.By Class Name


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_10


实现


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python webdriver点击指令_11


----------------or--------------------


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_12


3.By Tag Name


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_13


实现


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_14


4.By Name


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_15


实现


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_16


5.By Link Text


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_17


实现


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_18


6.By Partial Link Text


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_19


实现


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_20


7.By CSS


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_21


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_22


8.By XPath


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium爬虫_23


实现


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python webdriver点击指令_24


鼠标动作链

有些时候,我们需要在页面上模拟一些鼠标操作,比如双击、右击、拖拽甚至按住不同等,我们可以通过导入ActionChains类来做到。

示例


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python webdriver点击指令_25


填充表单

我们已经知道怎样想文本框中输入文字,但是有时候我们会碰到 标签的下拉框。直接点击下拉框中的选项不一定可以行。


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_26


Selenium专门提供了Select类处理下拉框。其实WebDriver中提供了一个叫Select的方法,可以帮助我们完成这些事情:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_27


以上是三种选择下拉框的方式,它可以根据索引来选择,可以根据值来选择,可以根据文字来选择。注意:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_28


全部取消怎么办?


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium爬虫_29


弹窗处理

当你触发了某个时间之后,页面出现了弹窗提示,处理这个提示或者获取提示信息方法如下:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_30


页面切换

一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换,切换窗口的方法如下:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_31


也可以使用window_handles方法来获取每个窗口的操作对象。例如:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_32


页面的前进和后退

操作页面的前进和后退功能:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_33


Cookies

获取页面每个Cookies值,用法如下:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_34


删除Cookies,用法如下:


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python webdriver点击指令_35


页面等待

注意:这是非常重要的一部分!


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_36


显式等待

显示等待指定了某个条件,然后设置最长等待事件。如果在这个时间还找到没有元素,那么便会抛出异常。


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python 实时读取 下拉列表 改变_37


如果不写参数,程序默认会0.5s调用一次来来查看安苏是否已经生成,如果本来元素时存在的,那么会立即返回。

下面是一些内置的等待条件,你可以直接调用这些条件,而不用自己写某些等待条件了。


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_38


隐式等待

隐式等待比较简单,就是简单地设置一个等待时间,单位为秒。


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium_39


如果不设置,默认等待时间为0。


python 实时读取 下拉列表 改变 python中选取下拉框中某个值_python selenium爬虫_40