自动化
作者:互联网
1.导入模块总结
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait#显示等待
import unittest
import HTMLTestRunner
2.切换总结
1.捕捉弹框并点击确定: 定义.switch_to.aleart.accept()
定义.switch_to.aleart.dismiss()
定义.switch_to.aleart.text
定义.switch_to.aleart.send_keys('要输入的内容')
2.切换框架: 定义.switch_to.default.content
定义.switch_to.frame('框架')
3.切换句柄: 定义.switch_to.window(切换的句柄)
定义.current_window.handle
定义.window.handle
3.切换的方式
1.弹窗不需要专门去切换
2.框架,需要回到默认框架再去想去的框架,并不能直接前往
3.句柄,需要获得所有句柄,获得所有句柄后用变量去承接这些句柄,一般后打开的句柄会相对的在列表的后面,
如果是两个句柄的切换可直接获得当前的句柄后用if语句去切换
4.元素定位的方式
1.定义.find_element(定位方式,“值”)例:定义.find_element(id,"wd")
2..定义.find_element('元素的id')
3..定义.find_element(link_text,'当前标签是a标签时可用')
4.定义.find_element(partition_link_text,'当前标签是a标签时可用')
5.定义.find_element(tag_name,'元素的标签')一般用于复选框
6.定义.find_element(xpath,'元素的路径')
7.定义.find_element(class_name,'元素的class的值')
8.定义.find_element(css_selector,'元素的名字')#用法和xpath一样
9.如果一个页面有多个同名的元素,则使用父级定位的方式,进行元素的定位
browser.find_element(id,‘父级相同的元素值’).find_element(link_text,"子级元素的内容").click()
5.点击方式
1.click()#纯点击
2.submit()#提交并点击
6.检查点
1.定义.find_element(id,'id的值').get_attribute('元素的某个变量')#获得id这个变量的某些值
2.定义.find_element(id,'id的值').size # 获得长宽高等数值以列表展示
3.定义.find_element(class_name,'class的值').text #获得文本信息
4.定义.current_url #获得地址
5.定义.title #获得跳转页面的抬头
6.WebDriverWait(定义,如果没找到的时间,多久找一次).until(lambda y:y.find_element_by_id("要找的元素的值"))
#用显示等待也可做检查点
7.鼠标操作
1.context_click(定位的元素名) #右击
2.double_click(定位的元素名) #双击
3.drag_and_drop(A元素名,B元素名) #将A元素拖拽到B元素上,前提是A元素本身是可以拖拽的
4.move_to_element(定位的元素名) #鼠标悬停
5.click_and_hold('定位的元素名')
6.click()
鼠标操作的使用方式和平常的有点不一样要先:
ActionChains(定义).鼠标操作.perform()
8.键盘操作
1.Keys.ESCAPE #键盘的esc
2.Keys.ENTER #回车键
3.Keys.SPACE #空格键
4.Keys.CONTROL #ctrl键
5.Keys.BACK_SPACE #回退键/删除键
6.Keys.ALT #alt键
7.Keys.CANCEL #取消键跟esc很相似
8.Keys.DELETE #删除键
9.Keys.TAB #tab键
键盘操作的方式是在定位元素后用send_keys(键盘操作)
如:bs.find_element_by_name('wd').send_keys(Keys.BACK_SPACE)
这个意思是定位‘百度一下’这个按钮,然后回车
9.显示等待
1.WebDriverWait(定义,如果没找到的时间,多久找一次) #如仅需做一个显示等待只需执行第一行代码
2. .until(lambda y:y.find_element_by_id("要找的元素的值")) #如需做检查点需要一二行连在一起
显示等待需要导入模块
10.隐式等待
1.定义.imlicitly_wait(最多等待的时间) #默认会在每一行代码执行单位是秒,不需导入模块,
#会等代码找到元素,直到等待的时间到了为止
11.异常捕捉
try:
可能会不正常的代码
except Exception:
发生错误后的代码
Exception 捕捉所有异常
raise nameError #有raise抛出异常后except后面的代码不会执行要想执行需将raise去掉
#只有try中报错eccept才会执行
finally:
不论报不报错都会执行的代码
12.架构的方法
1.先写出用例
2.将用例的公共模块做成方法
3.将原用例的的内容替换为方法
4.把原用例模块化
4.做一个执行所有用例的all_test
5.用调用用例的作为模块导入all_test
7.导入新报告的模块
8.将报告模块优化
9.将用例放入容器中
10.公共模块__init__里导入原用例作为模块
10.新建文件classname,里面导入公共模块的所有模块名
10.做一个方法
11.在classname里面做一个做一个方法,方法里面列表list里面放原用例的(用例名.类名)有多个用例用逗号隔开
12.列表=classname文件名的类名
13.用for循环去便利这个列表
13.页面滚动
1.js="var q=document.docunmetElement.scrollTop=位置" #置顶,位置一般是个像素,1000
DL.execute_script(js) #本来DL赋值中的引号会被当做字符串,但是使用执行脚本的函数,将会把引号中的内容进行执行
2.target = 定义.find_element_by_link_text('关注管理')
定义.execute_script("arguments[0].scrollIntoView();", target) #把页面拖到制定元素的位置,推荐使用
#如果想要将滚动条拉动到页面的一般,则必须找开发了解当前滚动条的像素大小
#一般情况下,拉到底部,一般写个10000就够了
14.好用的小命令
1.定义.close #关闭当前窗口
2.scroll 滚动 Top顶部
3.execute 执行
4.script 脚本
5定义.get_screenshot_as_file('图片保存的路径') 截图,快照
标签:定义,Keys,句柄,元素,element,自动化,find 来源: https://www.cnblogs.com/xieweiwen/p/16450956.html