1. webdriver简介
webdriver (Selenium2)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Selenium2的API更容易理解和使用,其可读性和可维护性也大大提高
Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动,不需要启动其他进程或安装其他程序,也不必像Selenium 1那样需要先启动服务。
另外,二者所采用的技术方案也不同。Selenium 1是在浏览器中运行 JavaScript来进行测试,而Selenium 2则是通过原生浏览器支持或者浏览器扩展直接控制浏览器。
Selenium 2针对各个浏览器而开发的,它取代了嵌入到被测Web应用中的 JavaScript。与浏览器的紧密集成,支持创建更高级的测试,避免了JavaScript安全模型的限制。除了来自浏览器厂商的支持,Selenium 2 还利用操作系统级的调用模拟用户输入
安装selenium这个第三方模块
pip install selenium
2. 浏览器扩展下载
webdriver支持多种浏览器,如firefox(带图形界面的linux服务器自带firefox,原生支持webdriver)、chrome、ie等浏览器
下载后解压,把可执行程序放到python的安装目录
3. driver对象的一些方法
#!/usr/bin/env python #coding:utf8 from selenium import webdriver url = 'https://www.baidu.com' driver = webdriver.Firefox() //创建一个firefox浏览器的dirver对象 driver.get(url) //访问url driver.get_cookies() //返回当前页的cookie driver.back() //历史记录后退一页 driver.forward() //历史记录前进一页 driver.refresh() //刷新当前页 # print(driver.page_source) //返回当前的html源码 print(driver.current_url) //返回当前的url print(driver.session_id) //session id print(driver.title) //titile driver.quit() //退出所有页面并关闭会话 ------------------------------------------------> https://www.baidu.com/ 04b303b0-0b58-45c6-b5bb-e4aa531b4bf7 百度一下,你就知道
4. 元素对象的一些方法
#!/usr/bin/env python #coding:utf8 import time from selenium import webdriver url = 'https://www.python.org/' driver = webdriver.Firefox() driver.get(url) element = driver.find_element_by_id('id-search-field') element.clear() //清空输入框的内容 element.send_keys('os') //发送数据到输入框 # element.click() //点击(同鼠标左键) # element.submit() //点击表单提交按钮 driver.find_element_by_id('submit').click() time.sleep(10) driver.quit()
5. 定位html中的元素对应的代码
实例一:在python官网搜索框搜索os模块
import time from selenium import webdriver url = 'https://www.python.org/' driver = webdriver.Firefox() driver.get(url) element = driver.find_element_by_id('id-search-field') element.clear() element.send_keys('os') driver.find_element_by_id('submit').click() time.sleep(10) driver.quit()
实例二:登陆京东并领取优惠券
#!/usr/bin/env python #coding:utf8 import time import string import random from selenium import webdriver def getTime(): return time.sleep(int(random.choice(string.digits))) url = 'https://www.jd.com/' driver = webdriver.Firefox() driver.get(url) getTime() driver.find_element_by_link_text('你好,请登录').click() getTime() driver.find_element_by_xpath('//a[@clstag="pageclick|keycount|201607144|2"]').click() element = driver.find_element_by_id('loginname') getTime() element.clear() element.send_keys('xxxxxx') element1 = driver.find_element_by_id('nloginpwd') getTime() element1.clear() element1.send_keys('xxxxxxx') getTime() driver.find_element_by_id('loginsubmit').click() driver.get('https://plus.jd.com/index') driver.find_element_by_xpath('//a[@clstag="plus2017|keycount|ZSQ|coupon_get1_46793030"]').click()