继读Excel文件后,需要把Excel列表对应的运行结果返回一个状态True/False,再放入一个list中,最后循环读这个list写到txt文件的结果中,方便查看
写文件要用到读文件时候的list,所以这里也吧读文件和运行过程贴出来
Excel文件总共有两列
读文件方法如下,不做过多解释,详细可查看我的读文件博客
for_myExcel
#######读Excel文件,并保存为list
open_Excel C:\\Users\\whoami\\Desktop\\read_file.xls
@{read_columnA} get_column_values mytext 0
@{read_columnB} get_column_values mytext 1
#log ${read_columnA[${x}][${y}]}
#log ${read_columnB[${x}][${y}]}
${y} set_Variable 1 #读取文件后,list示例[A2,u'hedi']
${count_row} get_row_count mytext #get_row_count/get_column_count 获取文本行/列数
Set_Suite_Variable ${count_row}
#log ${count_row}
@{a_list} create_list
@{b_list} create_list
: FOR ${x} IN RANGE ${count_row}
\ ${a} set_variable ${read_columnA[${x}][${y}]}
\ ${b} set_variable ${read_columnB[${x}][${y}]}
\ #${a_list} Evaluate '${a_list}'.append(${a}) #使用Evaluate方法支持python代码
\ #${a_list} Evaluate '${b_list}'.append(${b})
\ Append_to_list ${a_list} ${a} #Append_to_list需要Collections库支持
\ Append_to_list ${b_list} ${b}
Set_Suite_Variable ${a_list}
Set_Suite_Variable ${b_list}
由于写文件也需要引用运行过程中的变量,所以同时也贴出运行过程代码片段
for_loop
@{search_result} create_list
###############For开始#For开始#####################
: FOR ${num_a} IN RANGE ${count_row}
\ ${number_a} set_variable ${num_a}
\ login_keywords ${a_list[${number_a}]} #login_keywords登录,是我封装的用户关键字,这里只需要传入读取的用户名即可
\ #create_contaract
\ Click_Element Xpath=//div[@class='x-panel-header x-panel-header-noborder x-unselectable x-accordion-hd']/span/div[2]/b[text()='客户管理']
\ Click_Element Xpath=//span[@unselectable='on' and text()='直接客户查询']
\ Sleep 2
\ Select_frame Xpath=//iframe[@scrolling='auto' and @src='/crm/3.0/customer/customerSearch.jsp?s_m_i=176']
\ Sleep 1
\ ${Create_visible} Run_keyword_and_return_status Element_Should_Contain Xpath=//*[@class='x-btn-text add' or @class=' x-btn-text add'] 新建 #元素中是否包含'新建'
\ Unselect_Frame
\ Run_keyword_if '${Create_visible}'=='True' create_new_keywords ${b_list[${number_a}]} #存'新建'在则创建直客
\ #查询
\ search_keywords_true ${b_list[${number_a}]}
\ Append_to_list ${search_result} ${count_text} #将关键字search_keywords_true查询结果变量${count_text}值写入list
\ #管理员审批
\ Run_keyword_if '${Create_visible}'=='True' approve_cont_keywords ${b_list[${number_a}]} #如存在新建记录则审批,否则跳过此步
###############For结束#For结束###################
Close_Browser
Set_suite_variable ${search_result}
背景是这样,因为每个用户的权限不同,所以有的用户没有“新建”权限,所以加了个方法进行判断
\ ${Create_visible} Run_keyword_and_return_status Element_Should_Contain Xpath=//*[@class='x-btn-text add' or @class=' x-btn-text add'] 新建
\ Run_keyword_if '${Create_visible}'=='True' create_new_keywords ${b_list[${number_a}]} #存'新建'在则创建直客
这块第二行中create_new_keywords又是一个封装的“新建”操作的关键字,传入${b_list}中的直客名称,如存在则执行创建,不存在则跳过继续执行后面的
再继续就是查询了,同样也是进行了关键字封装search_keywords_true,传入传入${b_list}中创建的直客进行查询:
\ search_keywords_true ${b_list[${number_a}]}
********************************************************************************************************
这里需要强调的是,查询关键字是有返回结果的,顺便也贴出来,也是封装在search_keywords_true里
#获取搜索结果条数,并返回状态
${text_true} Get_Matching_Xpath_Count //div[@id='ext-gen33']//tr
${count_text} Set_variable_if ${text_true}>=1 True ${text_true}<1 False
Set_suite_variable ${count_text} #这个变量就是最后要返回的状态True/False
********************************************************************************************************
再然后就是进入写文件的初始环节,上面的for_loop中的
\ Append_to_list ${search_result} ${count_text} #将关键字search_keywords_true查询结果变量${count_text}值追加写入${search_result} 这个list
好了开始介绍写文件环节吧
因为我使用写Excel文件的方式总是写不进去,用的这个方法 Put String To Cell,可能和python安装的版本有关系吧,我安的是2.7.12,
所以没办法,只能写到txt里面了
【如果有大神用写Excel的方法写出来了,可以分享一下,共同学习】
写txt具体方法如下
write_result
[Documentation] 将结果写入txt文件
create_file C:\\Users\\whoami\\Desktop\\write_file.txt #OperatingSystem提供的 Create_file方法
@{number_list} create_list
#循环一个${number_list},用于编号
: FOR ${num} IN RANGE ${count_row} #${count_row}使用读文件时行数
\ ${number} set_variable ${num}
\ Append_to_list ${number_list} ${number}
#\ log ${number_list}
#循环追加写入txt文件
: FOR ${list} IN RANGE ${count_row}
\ ${list_num} set_variable ${list}
\ Append_to_file C:\\Users\\whoami\\Desktop\\write_file.txt ${number_list[${list_num}]+1}\.用户:${a_list[${list_num}]}---------------------查询结果:${search_result[${list_num}]}\r\n encoding=UTF-8
#${number_list[${list_num}]+1}表示对应Excel的行号*********${a_list[${list_num}]}循环将${a_list}中的值取出**********循环读${search_result}并追加写入文本
2.第二个FOR用循环追加写文件
注释:
(1). ${number_list[${list_num}]+1}表示对应Excel的行号
【也就是上面第一个FOR用的目的,但是生成的list是从0开始的,所以需要循环+1,让他从1开始,因为读到的Excel也是从1开始的】
(2). ${a_list[${list_num}]}循环将${a_list}中的值取出
【读文件时候生成的用户名${a_list}】
(3). 循环读${search_result}并追加写入文本,这里的${search_result}是for_loop中的运行结果,再贴出来方便查看
\ Append_to_list ${search_result} ${count_text} #将关键字search_keywords_true查询结果变量${count_text}值写入list
最后用了一句 Set_suite_variable ${search_result} 将这个运行结果list变为suite可用
这句${count_text}的来历
********************************************************************************************************
这里需要强调的是,查询关键字是有返回结果的,顺便也贴出来,也是封装在search_keywords_true里
#获取搜索结果条数,并返回状态
${text_true} Get_Matching_Xpath_Count //div[@id='ext-gen33']//tr
${count_text} Set_variable_if ${text_true}>=1 True ${text_true}<1 False
Set_suite_variable ${count_text} #这个变量就是最后要返回的状态True/False
********************************************************************************************************
所以,说了这么多,最后终于大功告成了,这是写完文件的txt文档
【也希望大家看完能给个赞,我也是初学,网上完全找不到写文件的教程,完全自己研究的,希望看后不要吝惜你的赞】