1)Xpath表达式中剔除指定的标签:
在工作过程中发现了一组标签和别的不一样:
本来要取到红色框中标签xpath表达式都是:$x("//table[@id='table-tests']/tbody/tr/td[3]/div/a")
但是绿色箭头的没有a标签就取不到,然后在网上查到了一种剔除指定标签的方式:
$x("//table[@id='table-tests']/tbody/tr/td[3]/div/*[name(.)!='p']") 这样可以把div下面的P标签踢掉,但是呢因为绿色箭头没有标a标签所以还是没取到;
如果使用:$x("//table[@id='table-tests']/tbody/tr/td[3]/div/*[name(.)='p']") 会把所有P标签选出来;
最后,想了想还是用正则表达式把不符合要求的删掉:
python代码如下:
import re
b=['bimface_2018_bimtiles.bimtiles\nC v3preview/bimface_2018_bimtiles.bimtiles.json', 'file_compare_bmd&bimtiles\nC modelcompare/file_compare_bmd&bimtiles.json', '建筑-办公主楼-F02-家具.dgn\nC dgn/建筑-办公主楼-F02-家具_bimtiles.dgn.json', '1578447784661.rfa\nC Bimtiles_singleMode/bimtile_贴图错乱.rfa.json', '八分部整合路基-tiles.rvt\nC Bimtiles_singleMode/bimtile_线性模型_八分部整合路基-tiles.rvt.json', 'bimtile_测试示例+-+Revit14种材质集合new-0725 (1).rvt\nC Bimtiles_singleMode/bimtile_测试示例+-+Revit14种材质集合new-0725 (1).rvt.json', 'bimtile_测试示例+-+Revit14种材质集合new-0725 (1).rvt\nC Bimtiles_singleMode/bimtile_测试示例+-+Revit14种材质集合new-0725 (1)-textureFalse.rvt .json', '手爬岩特大桥右幅(1).igms\nC Bimtiles_singleMode/bimtile_手爬岩特大桥右幅.igms.json', '三期模型.skp\nC Bimtiles_singleMode/bimtile_三期模型.skp.json', 'rme_advanced_sample_project+(1)+(1).rvt\nC Bimtiles_singleMode/bimtile_rme_advanced_sample_project.rvt.json', 'bimtile_Revit示例模型.rvt\nC Bimtiles_singleMode/bimtile_Revit示例模型.rvt.json', 'bimtile_Revit示例模型.rvt\nC Bimtiles_singleMode/bimtile_Revit示例模型-textureFalse.rvt.json']
c=[]
for k in b:
str02 = re.sub('\nC.*json','',k) #把List中的每项以\nC开头和json结尾的字符串用空替换
c.append(str02)
print(c)
#得到:
#['bimface_2018_bimtiles.bimtiles', 'file_compare_bmd&bimtiles', '建筑-办公主楼-F02-家具.dgn', '1578447784661.rfa', '八分部整合路基-tiles.rvt', 'bimtile_测试示例+-+Revit14种材质集合new-0725 (1).rvt', 'bimtile_测试示例+-+Revit14种材质集合new-0725 (1).rvt', '手爬岩特大桥右幅(1).igms', '三期模型.skp', 'rme_advanced_sample_project+(1)+(1).rvt', 'bimtile_Revit示例模型.rvt', 'bimtile_Revit示例模型.rvt']
因为好长时间没有写python的原故,上面的正则表达式也是也了很久,最开始一直想用^\nC.*.json$怎么也执行不成功,唉!最后还是一个简单的搞定
2)然后就发现robotframework中也有处理正则表达式的方法,但是怎么也不成功:
${newlistitem}= Replace String Using Regexp ${oldlistitem} \nC.*json ''
${newlistitem}= Replace String Using Regexp ${oldlistitem} '\nC.*json' ''
${newlistitem}= Replace String Using Regexp ${oldlistitem} "\nC.*json" '""
最后终于在一篇博文上看到,原来rf和底层python之间进行转义时出问题了
在robotframwork中使用正则表达式注意事项,比如在python中\,在rf中要用\\_Weeds的博客-CSDN博客_robotframework正则表达式
最后改成这样:
${newlistitem}= Replace String Using Regexp ${oldlistitem} \\nC\.*json '' 终于成功了
主要是要加转义字符并且正则表达式不用加引号引起来