Selenium2+Python2.0自动化测试【2】 操作浏览器

来源:互联网 发布:易我数据恢复好用吗 编辑:程序博客网 时间:2024/05/19 13:19

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*800
2.最大化窗口


1.6      页面刷新

有时候页面操作后,有的数据可能没及时同步,需要重新刷新,可以模拟刷新页面操作,相当于浏览器输入框后面的刷新按钮。


1.7      屏幕截屏

打开网站之后,也可以对屏幕截屏


1.8      前进和后退

在一个浏览器打开两个页面后,想返回上一页面,相当于浏览器左上角的左箭头按钮,返回到上一页面后,也可以切换到下一页,相当于浏览器左上角的右箭头按钮


1.9      退出

退出有两种方式,一种是close,另外一种是quit
close:用于关闭当前窗口,当打开的窗口较多时,就可以用close关闭部分窗口。
quit:用于结束进程,关闭所有的窗口,收回临时文件。

阅读全文
0 0
原创粉丝点击