robot framework 之写文件操作

继读Excel文件后,需要把Excel列表对应的运行结果返回一个状态True/False,再放入一个list中,最后循环读这个list写到txt文件的结果中,方便查看

写文件要用到读文件时候的list,所以这里也吧读文件和运行过程贴出来

Excel文件总共有两列

robot framework 之写文件操作_第1张图片


读文件方法如下,不做过多解释,详细可查看我的读文件博客

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}

读文件完成后,把A,B两列读完追加到了两个list中 ${a_list}、${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}


上面for片段中的这一行: 

背景是这样,因为每个用户的权限不同,所以有的用户没有“新建”权限,所以加了个方法进行判断

   \    ${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}并追加写入文本

1.上面的第一个FOR,循环的${number_list}用于前面的1~9编号

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文档


robot framework 之写文件操作_第2张图片


【也希望大家看完能给个赞,我也是初学,网上完全找不到写文件的教程,完全自己研究的,希望看后不要吝惜你的赞】

你可能感兴趣的:(Robot,Framework)