下载文件
在火狐浏览器中下载selenium的Python代码:
from selenium import webdriver
import os,time
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
driver = webdriver.Firefox(firefox_profile=fp)
driver.get("http://pypi.Python.org/pypi/selenium")
driver.find_element_by_partial_link_text("selenium-2").click()
cookie的操作
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.youdao.com")
#获取cookie信息
cookie = driver.get_cookies()
#将获取的cookie的信息打印出来
print(cookie)
driver.quit()
'''
get_cookies()获得所有cookie信息
get_cookie(name)返回特定name值有cookie信息
add_cookie(cookie_dict)添加cookie,必须有name和value值
delete_cookie(name)删除特定(部分)的cookie信息
delete_all_cookie()删除所有cookie信息
'''
添加cookie:
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.youdao.com")
driver.add_cookie({'name':'key-aaaaaaa','value':'value-bbbbbbb})
#遍历cookie中的name和value信息打印,当然还有上面添加的信息
for cookie in driver.get_cookie():
print ("%s ->%s"%(cookie['name'],cookie['value']))
调用JavaScript
用webdriver调用JS实现滚条滚动:
#左边距,上边距
#window.scrollTo(0,450);
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#搜索
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(2)
#将滚动条移动到页面的底部,这种写法只能操作上下
js = "document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(3)
#将滚动条移动到某个位置,这种写法可以操作上下的滚动条跟左右的滚动条
js1 = "window.scrollTo(0,450)"
driver.execute_script(js1)
time.sleep(3)
#将滚动条移动到页面的顶部,这种写法只能操作上下
js_ = "document.documentElement.scrollTop=0"
driver.execute_script(js_)
time.sleep(3)
driver.quit()
窗口截图
有错误就截图,这里演示的就是个有错误的:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
try:
driver.find_element_by_id('kw_error').send_keys('selenium')
driver.find_element_by_id('su').click()
except:
driver.get_screenshot_as_file("D:\\baidu_error.png")
driver.quit()
关闭窗口
driver.quit()#关闭所有窗口
driver.close() #只关闭当前窗口
验证码的处理
去掉验证码
这个方法最简单,对于开发人员来说,只需要把验证码注释掉就可以了,但是在测试环境,这样做可以省去测试人员的麻烦,但是在正式环境下,就会对系统带来一定的风险
设置万能码
import random
#生成一个1000到9999之间的随机整数
verify = random.randint(1000,9999)
print("生成的随机数:%d" %verify)
number = input("请输入随机数:")
print(number)
if number == verify:
print("登录成功!")
elif number == 132741:
print("登录成功")
else:
print("验证码有误")
randint()用于生成随机数,设置随机数的范围是1000~9999之间,运行程序分别输入的验证码、万能码和错误的验证码
验证码识别技术
验证码识别类库,太麻烦,没研究
记录cookie
保存cookie多少天能使用
浏览器记录一个cookie,找到cookie,然后再跟开发沟通
总结
- 熟练掌握xpath/CSS定位的使用,这样遇到各种难以控制的属性时才不会变得束手无策
- 准备一份selenium Python bingbindings ,及时查阅webdriver所提供的方法
- 学习JavaScript语言
- 自动测试经常与前段打交道,熟悉一些前段技术,W3C中有很多,比如:http请求,cookie,session机制等