selenium+python脚本编写笔记(五)
2017-12-26 17:19
323 查看
文件上传下载
http://www.jianshu.com/p/b03ef6ffc4a5
通过internet选项-高级-去掉勾选下载完成后发出通知选项,可以免去处理下载完成弹框的处理
AutoIT处理下载:
------------------------------------------------------------------------------------------
ControlFocus("文件下载 - 安全警告", "","Button2")
WinWait("[CLASS:#32770]","",10)
ControlFocus("文件下载 - 安全警告", "","Button2")
Sleep(2000)
ControlClick("文件下载 - 安全警告", "","Button2");
Sleep(2000)
ControlFocus("另存为", "","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlFocus("另存为","","Edit1")
Sleep(2000)
ControlSetText("另存为", "", "Edit1", "e:\xiazai\download")
Sleep(2000)
ControlClick("另存为", "","Button1");
------------------------------------------------------------------------------------------
关于日期空间的处理
#日期控件处理
#1、直接定位输入日期
driver.find_element_by_xpath(".//*[@id='DepartDate1TextBox']").send_keys("2017-09-30")
#2、input有属性readonly
# js移除属性
js = "document.getElementById('train_date').removeAttribute('readonly')" # 1.原生js,移除属性
# js = "$('input[id=c-date1]').removeAttr('readonly')" # 2.jQuery,移除属性
# js = "$('input[id=c-date1]').attr('readonly',false)" # 3.jQuery,设置为false
#js = "$('input[id=c-date1]').attr('readonly','')" # 4.jQuery,设置为空(同3)
driver.execute_script(js)
# 移除只读属性后定位输入时间值
driver.find_element_by_xpath(".//*[@id='train_date']").clear()
driver.find_element_by_xpath(".//*[@id='train_date']").send_keys("2017-09-30")
单选框
#
直接定位单选框
driver.find_element_by_id("q5_0").click()
复选框
1、直接定位单个复选框
driver.find_element_by_xpath(".//*[@id='divquestion4']/ul/li[2]/a").click()
2、勾选全部,可以用定位一组元素的方法
这一组复选框具有相同的标签属性,将其全部找到,循环逐一选中就OK
#
使用定位组元素方式
checkboxs = driver.find_elements_by_xpath(".//*[@id='divquestion4']/ul/li")
for
i in
checkboxs:
i.click()
3、判断复选框状态
#
获取复选框元素
checkbox1 = driver.find_element_by_xpath(".//*[@id='divquestion4']/ul/li[2]/a")
# 使用条件语句判断复选框状态
if
checkbox1.is_selected():
print
("checkbox is selected, now please deselected")
checkbox1.click()
else:
print("checkbox is not selected, now please selected")
checkbox1.click()
获取元素属性
# 获取页面标题
title = driver.title
print
title
# 获取元素文本
txt = driver.find_element_by_xpath(".//*[@id='extText']/li[1]/a/span").text
print
txt
# 获取超链接属性值
url = driver.find_element_by_xpath(".//*[@id='extText']/li[1]/a").get_attribute("href")
print
url
get_attribute("属性"),参数可以是class、name等任意属性
时间戳
import
time
project_name
= time.strftime("%Y%m%d%H%M%S",time.localtime(time.time()))
project_id
= "bs"
+
project_name
unittest
新创建一个文件run.py,内容如下:
注意事项:
1、测试用例名必须以test开头,因为我们通过discover(start_dir=testdir,pattern='test*.py'),pattern去找的测试用例。
2、测试用例中,class TestLogin(unittest.TestCase),class必须继承unittest.TestCases,注意这个类名以Test开头后面每个单词字母大写;
3、def test_login(self),定义的测试用例以小写字母test开头,用下划线分隔单词
http://www.cnblogs.com/111testing/p/6476696.html
https://www.cnblogs.com/111testing/p/6477005.html
执行方式一
#8如果直接运行该文件(__name__值为__main__),则执行以下语句,常用于测试脚本是否能够正常运行
if __name__=='__main__':
#8.1执行测试用例方案一如下:
#unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们。
#执行顺序是命名顺序:先执行test_case1,再执行test_case2
unittest.main()
执行方式二
'''
#8.2执行测试用例方案二如下:
#8.2.1先构造测试集
#8.2.1.1实例化测试套件
suite=unittest.TestSuite()
#8.2.1.2将测试用例加载到测试套件中。
#执行顺序是安装加载顺序:先执行test_case2,再执行test_case1
suite.addTest(Test('test_case2'))
suite.addTest(Test('test_case1'))
#8.2.2执行测试用例
#8.2.2.1实例化TextTestRunner类
runner=unittest.TextTestRunner()
#8.2.2.2使用run()方法运行测试套件(即运行测试套件中的所有用例)
runner.run(suite)
'''
执行方式三
'''
#8.3执行测试用例方案三如下:
#8.3.1构造测试集(简化了方案二中先要创建测试套件然后再依次加载测试用例)
#执行顺序同方案一:执行顺序是命名顺序:先执行test_case1,再执行test_case2
test_dir = './'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
#8.3.2执行测试用例
#8.3.2.1实例化TextTestRunner类
runner=unittest.TextTestRunner()
#8.3.2.2使用run()方法运行测试套件(即运行测试套件中的所有用例)
runner.run(discover)
'''
http://www.jianshu.com/p/b03ef6ffc4a5
通过internet选项-高级-去掉勾选下载完成后发出通知选项,可以免去处理下载完成弹框的处理
AutoIT处理下载:
------------------------------------------------------------------------------------------
ControlFocus("文件下载 - 安全警告", "","Button2")
WinWait("[CLASS:#32770]","",10)
ControlFocus("文件下载 - 安全警告", "","Button2")
Sleep(2000)
ControlClick("文件下载 - 安全警告", "","Button2");
Sleep(2000)
ControlFocus("另存为", "","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlFocus("另存为","","Edit1")
Sleep(2000)
ControlSetText("另存为", "", "Edit1", "e:\xiazai\download")
Sleep(2000)
ControlClick("另存为", "","Button1");
------------------------------------------------------------------------------------------
关于日期空间的处理
#日期控件处理
#1、直接定位输入日期
driver.find_element_by_xpath(".//*[@id='DepartDate1TextBox']").send_keys("2017-09-30")
#2、input有属性readonly
# js移除属性
js = "document.getElementById('train_date').removeAttribute('readonly')" # 1.原生js,移除属性
# js = "$('input[id=c-date1]').removeAttr('readonly')" # 2.jQuery,移除属性
# js = "$('input[id=c-date1]').attr('readonly',false)" # 3.jQuery,设置为false
#js = "$('input[id=c-date1]').attr('readonly','')" # 4.jQuery,设置为空(同3)
driver.execute_script(js)
# 移除只读属性后定位输入时间值
driver.find_element_by_xpath(".//*[@id='train_date']").clear()
driver.find_element_by_xpath(".//*[@id='train_date']").send_keys("2017-09-30")
单选框
#
直接定位单选框
driver.find_element_by_id("q5_0").click()
复选框
1、直接定位单个复选框
driver.find_element_by_xpath(".//*[@id='divquestion4']/ul/li[2]/a").click()
2、勾选全部,可以用定位一组元素的方法
这一组复选框具有相同的标签属性,将其全部找到,循环逐一选中就OK
#
使用定位组元素方式
checkboxs = driver.find_elements_by_xpath(".//*[@id='divquestion4']/ul/li")
for
i in
checkboxs:
i.click()
3、判断复选框状态
#
获取复选框元素
checkbox1 = driver.find_element_by_xpath(".//*[@id='divquestion4']/ul/li[2]/a")
# 使用条件语句判断复选框状态
if
checkbox1.is_selected():
("checkbox is selected, now please deselected")
checkbox1.click()
else:
print("checkbox is not selected, now please selected")
checkbox1.click()
获取元素属性
# 获取页面标题
title = driver.title
title
# 获取元素文本
txt = driver.find_element_by_xpath(".//*[@id='extText']/li[1]/a/span").text
txt
# 获取超链接属性值
url = driver.find_element_by_xpath(".//*[@id='extText']/li[1]/a").get_attribute("href")
url
get_attribute("属性"),参数可以是class、name等任意属性
时间戳
import
time
project_name
= time.strftime("%Y%m%d%H%M%S",time.localtime(time.time()))
project_id
= "bs"
+
project_name
unittest
新创建一个文件run.py,内容如下:
import unittest if __name__ == '__main__': testdir = "./" discover = unittest.defaultTestLoader.discover(start_dir=testdir,pattern='test*.py') runner = unittest.TextTestRunner() runner.run(discover)
注意事项:
1、测试用例名必须以test开头,因为我们通过discover(start_dir=testdir,pattern='test*.py'),pattern去找的测试用例。
2、测试用例中,class TestLogin(unittest.TestCase),class必须继承unittest.TestCases,注意这个类名以Test开头后面每个单词字母大写;
3、def test_login(self),定义的测试用例以小写字母test开头,用下划线分隔单词
http://www.cnblogs.com/111testing/p/6476696.html
https://www.cnblogs.com/111testing/p/6477005.html
执行方式一
#8如果直接运行该文件(__name__值为__main__),则执行以下语句,常用于测试脚本是否能够正常运行
if __name__=='__main__':
#8.1执行测试用例方案一如下:
#unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们。
#执行顺序是命名顺序:先执行test_case1,再执行test_case2
unittest.main()
执行方式二
'''
#8.2执行测试用例方案二如下:
#8.2.1先构造测试集
#8.2.1.1实例化测试套件
suite=unittest.TestSuite()
#8.2.1.2将测试用例加载到测试套件中。
#执行顺序是安装加载顺序:先执行test_case2,再执行test_case1
suite.addTest(Test('test_case2'))
suite.addTest(Test('test_case1'))
#8.2.2执行测试用例
#8.2.2.1实例化TextTestRunner类
runner=unittest.TextTestRunner()
#8.2.2.2使用run()方法运行测试套件(即运行测试套件中的所有用例)
runner.run(suite)
'''
执行方式三
'''
#8.3执行测试用例方案三如下:
#8.3.1构造测试集(简化了方案二中先要创建测试套件然后再依次加载测试用例)
#执行顺序同方案一:执行顺序是命名顺序:先执行test_case1,再执行test_case2
test_dir = './'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
#8.3.2执行测试用例
#8.3.2.1实例化TextTestRunner类
runner=unittest.TextTestRunner()
#8.3.2.2使用run()方法运行测试套件(即运行测试套件中的所有用例)
runner.run(discover)
'''
相关文章推荐
- selenium+python脚本编写笔记(十)
- selenium+python脚本编写笔记(十二)
- selenium+python脚本编写笔记(九)
- selenium+python脚本编写笔记(十一)
- selenium+python脚本编写笔记(四)
- [简明python教程]学习笔记之编写简单备份脚本
- selenium+python脚本编写笔记(十三)
- selenium+python脚本编写笔记(十四)
- python学习笔记——5_解决问题编写脚本
- 学习 python 编写规范 pep8 的问题笔记
- Monkeyrunner基于python编写脚本通用方法
- 【学习笔记】编写selenium测试脚本(Java)的基本步骤
- Python(7) 编写规范 pep8 的问题笔记
- 接触Python编写小脚本-用来辅助项目生成
- 编写Python CGI脚本的教程
- python学习笔记:在python文件中如何调用其它python脚本文件
- 8. Python脚本学习笔记八个别细节一
- 21. Python脚本学习笔记二十一图形化界面
- 3. Python脚本学习实战笔记三 主流的XML
- LR学习笔记六 之 脚本编写实践过程