selenium+python脚本编写笔记(五)

  • 文件上传下载



通过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("属性"),参数可以是classname等任意属性
 


  • 时间戳


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开头,用下划线分隔单词

 




执行方式一
#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)  
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值