在xpath路径中添加变量参数

需求:需要从文件中读取参数,然后添加到xpath中,根据传入的参数执行相应的操作点击,如下:

1、先试着使用固定的路径运行一下,代码如下:

这里的 xpath = ‘//*[@class="ant-select-dropdown-menu-item"][1]‘ , [1]代表点击的是这个class下的第1号元素,即“母婴用品”

可以执行成功,说明方法可行

2、下一步就是要把固定的参数[1]换成非固定参数,直接把[1]换一个值就可以了,list_li是从文件里读取的当前传入的数字,代码如下:

执行失败,提示定位不到这个元素

本次的 xpath =( ‘//*[@class="ant-select-dropdown-menu-item"][list_li]‘  ),

仔细看了一下,[list_li]是在 ‘‘ 里面的,所以这个值好像是没传成功,python把它当一个字符串读取了

3、再换一种方式,试着把[list_li]写在字符串外面,代码如下:

本次的 xpath =( ‘//*[@class="ant-select-dropdown-menu-item"]‘[list_li]  ),

执行之后还是报错,报错提示 : xpath现在是一个html文档类型,应该是一个元素类型。

虽然不明白什么意思吧,但肯定还是错的,继续改

4、试着把[list_li]写在()外面,代码如下:

本次的 xpath =( ‘//*[@class="ant-select-dropdown-menu-item"]‘)[list_li]  ,

报错:这种对象不支持索引,也就是说Xpath对象不支持索引,,

5、上面的思路都是想着定位到这个css,然后再定位索引,上面的思路走不通,就换一种思路

  试着在xpath中直接新增参数,代码如下

本次的 xpath =(‘//*[@class="ant-select-dropdown-menu-item"][text = 1母婴用品]‘),

报错:不是一个有效的xpath表达式

6、实在不知道怎么办的时候继续百度,看到一个使用format把参数加进去的方法,试一下

还是以前的思路,将索引当做参数,但是这个参数不是直接放在里边,是通过format添加进去的

本次的xpath:  list_xpath = ‘//*[@class="ant-select-dropdown-menu-item"][{}]‘.format(list_li)

试着执行一下,成功了!!!

总结:思路没错,就是使用的方法不对,直接把参数放进去不对,就使用别的方法添加进去,具体为什么这个可以我还没有研究清楚

原文地址:https://www.cnblogs.com/caoyinshan/p/11320425.html

时间: 2024-10-12 20:26:48

在xpath路径中添加变量参数的相关文章

简单东西-链接路径中添加随机数的作用

今天实现登陆的验证码生成功能,有一个"看不清"的链接,用于获取新的验证码,通过JS动态修正验证码的img元素的src属性,结果,验证码一直都是初始页面生成的那张图片,但是"看不清"的JS脚本已经执行过了.网上查资料才知道是浏览器缓存问题,解决办法是在请求路径中添加一个随机参数,迫使浏览器放弃缓存.重新去请求验证码. 原来随机数还有这个用途,以前也经常看到请求路径末尾添加一个参数Rand=Math.random()的代码,却从未关注这样处理的用意.简单知识,今天碰到了

java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

在pom.xml文件中添加如下依赖: <!-- https://mvnrepository.com/artifact/cn.easyproject/orai18n --> <dependency> <groupId>cn.easyproject</groupId> <artifactId>orai18n</artifactId> <version>12.1.0.2.0</version> </depend

jmeter随笔(23)--在csv中维护变量参数

点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下: 更多书籍,敬请期待 问题: 1.我的变量表多,通过之前的csv获取的方式,或者用户变量来维护,比较麻烦 2.我想在脚本之外维护我的变量数据,脱离脚本 解决方案: 1.csv的配置如图,队列是变量名称,第二列是变量的值,第一行是标题

U 跳转中加入变量参数的写法

href="{:U('Message/news?id='.$vo['messageid'].'')}" 就是在U方法里如果参数是变量就用 '.$i.'代替 {$i}

MFC中添加ToolTip提示框

PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型成员,并在适当的地方将其初始化如下: m_ToolTipCtrl.Create(this); m_ToolTipCtrl.AddTool(GetDlgItem(IDC_BUTTON1), _T("This is ToolTip")); m_ToolTipCtrl.SetMaxTipWidt

jquery:给正则表达式添加变量

http://www.2cto.com/kf/201402/277766.html 前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = "string"; var a = [1,2]; var o = {}; 如果需要加入变量,那也是十分简单的事情,比如: var v = "bl"; var s = "string&quo

Swift - 31 - 常量参数, 变量参数和inout参数

//: Playground - noun: a place where people can play import UIKit // swift中默认情况下, 传入的参数是不可以修改的, 也就是let类型, 也就是常量参数 // 如果想修改这个参数的值, 需要在参数前加"var", 也就是变量参数 func toBinary(var num:Int) -> String // 将一个数转换为二进制 { var result = "" while num !

mongoose update操作属性中的变量

最近在学习mongoose操作数据库,利用schema模型.记录一下通过使用update()操作实现数据库更新: 可在属性中添加变量,'属性名.0',可以修改该属性的第一条属性,依次类推,但是如果想实现:'属性名.n',x也是一个变量,写法如下: let n = pramnumber,//数字变量 modu.update( {_id:editData.temp_id}, { ['属性名.' + n]: [editData.cpu_usage,editData.enable], } ).exec(

Servlet预加载实现手动添加全局参数

Servlet生命周期第一步,也就是init()函数,在此函数中,完成了各种数据的初始化,当然也包括参数初始化,也就是InitParam 当我们取初始化参数的时候,代码如下 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Enumeration<String> e = this.getServletContext().get