您的位置:首页 > 编程语言 > Python开发

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,内容如下:

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)  

'''
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python selenium