selenium(一)之入门基础语法

1.selenium 2介绍
selenium是目前一个web自动化测试很流行的模拟浏览器的程序测试系统。严格说来,Selenium是一套完整的Web应用程序测试系统,它包含了测试的录制(Selenium IDE)、编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。Selenium Core由一种指定格式的HTML文件驱动,在一定程度上增强了测试套件(Test Suite)的可读性。

2.selenium优势
(1)我选用selenium部分是因为一般爬虫程序只能解析静态的网页,不能很好的处理带有js和ajax的页面。因为现在网站出于多方面的考量,都会使用js和ajax技术来设计页面请求。
(2)除上面那点之外,我们看到现在大型的网站都会要求先登录才可以查看网页,并且登录模块中会附有验证码以及各中加密算法,以及通过ajax与服务器建立连接等。使得我们处理登录时,必须要完全模拟登陆的全过程。大大提高了难度,并且像淘宝这类的,它加密算法很复杂并且定期会变动的,你研究模拟登陆的意义也就没那么大了。

3.selenium安装

3.1安装selenium
python目录下执行命令:
pip install selenium

3.2安装浏览器对应的webdriver程序
我使用的浏览器是chrome,所以我从网上下载了chrome的webdriver驱动程序

4.selenium常用基本语法

4.1浏览器操作
webdriver.Chrome(“驱动程序路径”),加载浏览器驱动
driver.get(url),打开网页

driver.back(),后退

driver.forward(),前进

driver.maximize_window(),浏览器最大化

driver.set_windows_size(width,height),设置宽高

driver.page_source,获取一个页面的源代码

driver.close(),浏览器退出

更多方法直接查看WebDriver的源代码即可

4.2 文档元素定位
webdriver提供了一系列元素定位方法,常用有以下几种
find_element_by_id,通过id标识

find_element_by_name,通过元素的name属性标识

find_element_by_class_name,通过class属性标识

find_element_by_xpath,通过xpath表达式抽取

find_element_by_tag_name,通过元素名(标签)标识

find_element_by_link_text,通过链接的文字标识

find_element_by_partial_link_text,通过链接的部分文字标识
dinf_element_by_css_selector,通过css来标识

注:以上是对元素进行定位,关于如何对一组元素进行定位呢?其实只需要将以上函数写成find_elements_by_?的形式即可。

4.3元素属性常用方法

size,返回元素的尺寸

text,获取元素的文本

is_displayed(),设置噶元素是否用户可见

get_attribute(name),获得属性值

4.4对象操作
clear(),如果可以的话,清楚元素的内容
click(),单击元素
send_keys,在元素上模拟按键输入
submit,提交表单

4.5设置等待时间
元素加载需要时间,如果在元素没加载之前就使用它,程序会报错。故为了保证脚本能够正常执行,需要中脚本执行时添加等待时间,只有等到元素出现时,才进行操作
一般有如下3中方式实现等待:
(1)sleep(),设置固定的休眠时l间.
(2)implicitly_wait():是webdriver提供的一个超时等待,隐私等待一个元素被发现,或者一个命令完成。如果超过设置时间则抛出异常

from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
#WebDriverWait()方法使用
element=WebDriverWait(driver, 10).until(lambda driver :
driver.find_element_by_id("kw"))
element.send_keys("selenium")

(3)WebDriverWait():在设置时间内,默认每隔一段时间检测一次页面元素是否存在,如果超时检测不到元素则抛出异常。

from selenium.webdriver.support.ui import WebDriverWait
....
element = WebDriverWait(driver, 10,1).until(lambda x: x.find_element_by_id(“someId”))
is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).
until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())

详细方法描述如下:


WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
参数详解如下:
driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
timeout - 最长超时时间,默认以秒为单位
poll_frequency - 休眠时间的间隔(步长)时间,默认为 0.5 秒
ignored_exceptions - 超时后的异常信息,默认情况下抛 NoSuchElementException 异常。

unit()和until_not()方法
WebDriverWai()一般由 unit()或 until_not()方法配合使用,
下面是 unit()和 until_not()方法的说明。
until(method, message=’ ’)
调用该方法提供的驱动程序作为一个参数,直到返回值不为 Falseuntil_not(method, message=’ ’)
调用该方法提供的驱动程序作为一个参数,直到返回值为 False

你可能感兴趣的:(python)