首页 > 解决方案 > 带有可变谓词循环的 Selenium VBA XPath

问题描述

我希望对 Selenium VBA 中的语法有所帮助。

我正在尝试使用变量谓词“r”来抓取一些表日期来指定这样的行,但它不起作用。

当一个整数值代替谓词“r”时,代码确实有效[我认为谓词是环顾四周的正确词],所以我知道表达式正在找到正确的东西。

For r = 2 To 4

ThisWorkbook.Sheets("Orders").Cells(r, 1).Value = bot.FindElementByXPath("//*[@id='ctl00_mainContent_ucOrdersList_dgOrders']/tbody/tr[r]/td[2]").Text

Next r

似乎它应该是可能的。我找到了这个,但不确定它是什么语言或如何将其翻译成 Selenium VBA:

for (int i =1;i<rows.size();i++)
            {    
                max= wd.findElement(By.xpath("html/body/div[1]/div[5]/table/tbody/tr[" + (i+1)+ "]/td[4]")).getText();

所以本质上我该如何 tr[" + (i+1)+ "]在 Selenium VBA 中做这件事?

提前致谢。

标签: vbaseleniumloopsxpathpredicate

解决方案


在你的循环中试试这个:

ThisWorkbook.Sheets("Orders").Cells(r, 1).Value = bot.FindElementByXPath("//*[@id='ctl00_mainContent_ucOrdersList_dgOrders']/tbody/tr[" & r & "]/td[2]").Text

使用 & 连接字符串。

这是关键位:"...tr[" & r & "]/td..."

有关在此处加入 vb 字符串的更多信息

对于 + 运算符,他们声明:

虽然原则上 + 符号与 & 连接运算符相同,但它也兼作加法运算符。因此,正如微软所说:

当您使用 + 运算符时,您可能无法确定是否会发生加法或字符串连接。使用 & 运算符进行连接以消除歧义并提供自记录代码。


推荐阅读