1 操作浏览器
用Python调用webdriver框架的API,对浏览器做一些常规的操作,如打开、前进、后退、刷新、设置窗口大小、休眠、截屏、退出等操作。
1.1 使用Firfox打开网站
1.第一步:从selenium里面导入webdriver模块
2.打开Firefox浏览器
3.打开百度网址
1.2 使用IE打开网站
1.第一步:从selenium里面导入webdriver模块
2.打开IE浏览器
3.打开百度网址
1.3 使用Chrome打开网站
1.第一步:从selenium里面导入webdriver模块
2.打开Chrome浏览器
3.打开百度网址
4.如果出现如下报错:
“您使用的是不受支持的命令行标记:--ignore-certificate-errors。稳定性和安全性会有所下降”
请按如下方法解决,使用option参数
1.4 设置等待
Selenium的等待方式有三种:线程休眠、显示、隐式、
线程休眠:
这种叫强制等待,不管你浏览器是否加载完了,程序都得等待设定的时间,时间一到,再继续执行后面的代码,方法简单,但是不灵活,严重影响程序执行速度,不建议经常使用。
隐式等待:
隐式等待(智能等待),全局变量,就是在创建driver时,设置一个等待时间,如果在设定的时间内网页加载完成或者元素找到,则执行后续代码,否则一直等到时间截止,然后执行下一步。
显式等待:
显式等待,WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。简单说就是:程序每隔N秒查询一下,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间(需要考虑隐式等待),然后抛出TimeoutException。
这里我们详细说下WebDriverWait类的方法和参数:
以下是源码的解释文档
def __init__(self, driver, timeout,poll_frequency=POLL_FREQUENCY, ignored_exceptions=None):
"""Constructor, takes a WebDriver instance and timeout inseconds.
:Args:
- driver - Instance of WebDriver (Ie, Firefox, Chrome or Remote)
#传入WebDriver实例,即我们例子中的driver
- timeout - Number of seconds before timing out
#超时时间,等待的最长时间(同时要考虑隐性等待时间)
- poll_frequency - sleep interval between calls By default, it is 0.5second.
#调用until或until_not中的方法的间隔时间即循环查询的时间,默认是0.5秒
- ignored_exceptions - iterable structure of exception classes ignored duringcalls. By default, it contains NoSuchElementException only.
#忽略的异常,如果在调用until或until_not的过程中抛出这个元组中的异常,则不中断代码,继续等待,如果抛出的是这个元组外的异常,则中断代码,抛出异常。默认只有NoSuchElementException。
until
method:在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False
message: 如果超时,抛出TimeoutException,将message传入异常 until_not 与until相反,until是当某元素出现或什么条件成立则继续执行,until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。
详细了解后可以调用方法如下:
WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)
要实现显示等待,我们可以用selenium提供的 expected_conditions 模块中的各种条件,也可以用WebElement的 is_displayed() 、is_enabled()、is_selected() 方法,或者用自己封装的方法都可以,这里举两个例子:
webdriverwait与expected_conditions两者结合的方式
is_displayed()实现显示等待
1.5 控制浏览器窗口大小
1.可以设置浏览器窗口大小,如设置窗口480*8002.最大化窗口
1.6 页面刷新
有时候页面操作后,有的数据可能没及时同步,需要重新刷新,可以模拟刷新页面操作,相当于浏览器输入框后面的刷新按钮。
1.7 屏幕截屏
打开网站之后,也可以对屏幕截屏1.8 前进和后退
在一个浏览器打开两个页面后,想返回上一页面,相当于浏览器左上角的左箭头按钮,返回到上一页面后,也可以切换到下一页,相当于浏览器左上角的右箭头按钮
1.9 退出
退出有两种方式,一种是close,另外一种是quitclose:用于关闭当前窗口,当打开的窗口较多时,就可以用close关闭部分窗口。
quit:用于结束进程,关闭所有的窗口,收回临时文件。