python之WebDriver API知识总结

#WebDriver API
#4.1从定位元素开始:
#id定位
find_element_by_id(“su”)
#name定位
find_element_by_name(‘wd’)
#class定位
find_element_by_class_name(s_ipt)
#tag定位
#通过tag识别某个元素的概率很低,tag包括:


link定位
find_element_by_link_text(“新闻”)
partial link定位
#是对文本连接的一个补充,有的连接文本比较长,就可以取文本中的一部分进行定位
find_element_by_partial_link_text(“文本信息中的一部分”)
#XPath定位
#绝对路径定位:
find_element_by_xpath("/html/body/div/div[2]/div…/input")
#利用元素属性定位:
find_element_by_xpath("//input[@id=‘kw’]")
#层级与属性相结合
#如果一个元素本身没有可以唯一标识这个元素的属性值,那么可以找其上一级元素
#如果他的上级元素有可以用来唯一标识的属性的值,也可以拿来使用
find_element_by_xpath("//span[@class=‘bg s_ipt_wr’]/span/input")

#css定位
#通过class定位:(.表示通过class属性来定位)
find_element_by_css_selector(".s_ipt")
#通过id属性定位:(#表示通过id属性来定位)
find_element_by_css_selector("#kw")
#通过签名来定位:
find_element_by_css_selector(“input”)

#通过by定位
#针对前面介绍的8中方法,webdriver还提供了另一种写法,即统一调用
#find_element()方法
find_element(By.ID,‘kw’)

#控制浏览器
#控制浏览器后退,前进
dirver.back()
dirver.forward()
#模拟浏览器刷新
driver.refresh()
#简单元素操作
clear()#清除文本
send_keys(value)#模拟按键输入
click()#单击元素

#webelement接口常用方法:
submit()#方法用于提交表单
#click()方法可以与submit()方法替换使用
#鼠标事件
#perform():执行所有ActionChains中储存的行为
#context_click():右击
#double_click():双击
#drag_and_drop():拖动
#move_to_element():鼠标悬停
#例子:
from selenium import webdriver
#引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
driver =webdriver.Firefox()
driver.get(“http://yunpan.360.cn”)
#定位到右击的元素
right_click=dirver.find_element_by_id("")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right_click).perform()

#导入提供鼠标操作的ActionChains类
from selenium.webdriver import ActionChains
#调用ActionChains()类,将浏览器驱动driver作为参数传入
ActionChains(right_click)
#context_click()方法用于模拟鼠标右键操作,在调用时需要指定元素定位
context_click(right_click)
#执行所有ActionChains中的储存行为,可以理解是对整个操作提交动作
perform()

#键盘事件
#keys()类提供了键盘上几乎所有的按键方法,前面了解到send_keys()方法可以用来模拟键盘输入
#除此之外,我们还可以用它来输入键盘上的按键,甚至组合键,如ctrl+A;ctrl+C等

from selenium import webdriver
#引入keys模块
from selenium.webdriver.common.action_chains import Keys
driver=wedriver.Firefox()
driver.get(“http://www.baidu.com”)
#输入框输入内容
driver.find_element_by_id(“kw”).send_keys(“seleniumm”)
#删除多输入的一个m(back_space为删除键)
driver.find_element_by_id(“kw”).send_keys(Keys.BACK_SPACE)
#输入空格键+“教程”
driver.find_element_by_id(“kw”).send_keys(Keys.SPACE)
driver.find_element_by_id(“kw”).send_keys(“教程”)
#ctrl+a全选输入框内容
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘a’)
#ctrl+x剪切输入框的内容
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘x’)
#粘贴内容到输入框
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘v’)
#通过回车键来代替单击操作
driver.find_element_by_id(“su”).send_keys(Keys.ENTER)
driver.quit()

#4.6获得验证信息:
from selenium import webdriver
import time
driver=webdriver.firefox()
dirver.get(“http://www.126.com”)
print(‘Before login=======’)
#打印当前页面title
title=dirver.title
print(title)
#打印当前页面URL
now_url=driver.current_url
print(now_url)
#执行邮箱登录
driver.find_element_by_id(“idInput”).clear()
driver.find_element_by_id(“idInput”).send_keys(“username”)
driver.find_element_by_id(“pwdInput”).clear()
driver.find_element_by_id(“pwdInput”).send_keys(“password”)
driver.find_element_by_id(“lodinBtn”).click()
time.sleep(5)

print(“after login=========”)
#再次打印当前页面title
title=driver.title
print(title)
#打印当前页面的URL
now_url=driver.current_url
print(now_url)

#获得登录的用户名
user=driver.find_element_by_id(‘spnUid’).text
print(uesr)
driver.quit()

#4.7设置元素等待
#1.显式等待
#WebDrverWait类是由webdriver提供的等待方法,在设置时间内,默认每隔一段时间
#检测一次当前页面的元素是否存在,如果超过设置时间,检测不到抛出异常
until(method,message=’’)
#调用该方法提供的驱动程序作为一个参数,知道返回值为true
until_not(method,message=’’)
#调用该方法提供的一个驱动程序作为一个参数,直到返回值为false
#2.隐式等待
dirver.implicitly_wait(10)#默认单位为秒
#3.sleep休眠方法
sleep(1)#默认单位为秒
#4.8定位一组元素
#在find_element_by_id()的element的后面加上s表示复数
#批量操作元素,例如勾选页面上的所有的复选框
#先获取一组元素,再从这组对象中过滤出需要的元素,例如定位出页面上所有的
#checkbox,然后在选择其中一个进行操作
from selenium import webdriver
import os,time
driver=webdirver.Firefox()
file_path=‘file://’+os.path.abspath(‘checkbox.html’)
driver.get(file_path)
#选择页面上的所有tag name为input元素
inputs=driver.find_elements_by_tag_name(‘input’)
#然后从中过滤出type为checkbox的元素,单击勾选
for i in inputs:
if i.get_attribute(‘type’)==‘checkbox’:
i.click()
time.sleep(1)
driver.quit()

#4.9多表单切换:
#通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的
#内嵌页面中
#4.10多窗口切换:
#switch_to.window()方法
current_window_handle#:获得当前窗口的句柄
window_handles#:返回所有窗口的句柄到当前会话

#4.12上传文件:
#1.send_keys实现上传:
#通过send_keys()指定本地文件路径的方式实现文件上传
#定位上传按钮,添加本地文件:
driver.find_element_by_name(“file”).send_keys(‘D://upload_file.txt’)
driver.quit()
#2.通过Autolt实现上传

#4.13下载文件
#文件会自动下载并且存放在设置的目录中

#操作cookie
#基于真实的cookie的测试是无法通过白盒和集成测试的,webdriver提供了cookie
#操作的相关方法,可以读取,添加,删除cookie信息
#webdiver操作cookie的方法:
get_cookies() #获取所有cookie信息
get_cookie(name) #返回字典的key为name的cookie信息
add_cookie(cookie_dict) #添加cookie,‘cookie_dict’指定对象,必须有name和value值
delete_cookie(name,optionString)#删除cookie信息
delete_all_cookies()#删除所有cookie信息
#窗口截图:
#提供了窗口截图函数get_screenshot_as_file()来截取当前窗口。
#关闭窗口
driver.quit()
driver.close()

#验证码的处理
#1.去掉验证码:
#这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可。
#如果是在测试环境,这样就可以省去测试人员不少的麻烦,但如果自动化测试脚本是在
#正式的测试环境测试,那么这种做法就给系统带来了一定的风险
#2.设置万能验证码
#去掉验证码的主要问题是安全,为了应对在线系统的安全威胁,可以在修改程序时
#不取消验证码,而在程序中留一个后门,即设置一个万能验证码。只要用户输入这个验证码
#程序就认为验证通过,否则就判断用户输入的验证码是否正确
#设计万能验证码的方式非常简单,只需要对用户的输入信息多加一个逻辑判断
#下面通过例子演示:
from random import randint
#生成一个1000到9999之间的随机整数
verify=randint(1000,9999)
print(u"生成随机数:%d" %verify)
number=input(“请输入随机数:”)
print(number)
number=int(number)

if numberverify:
print(“登录成功!”)
elif number
132741:
print(“登录成功!”)
else:
print(‘验证码输入有误!’)
#random()用于生成随机数,设置随机数的范围为1000—9999之间。运行程序分别输入正确的
#验证码,万能验证码和错误的验证码

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值