【问题标题】:Selenium VBA XPath with variable predicate loop带有可变谓词循环的 Selenium VBA XPath
【发布时间】:2020-08-05 13:12:12
【问题描述】:

我希望对 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 中的位?

提前致谢。

【问题讨论】:

  • 使用 & 符号 &amp; 在 VB 中加入字符串尝试 "tr[" &amp; (i+1) &amp;"]" - 我应该为它写一个答案:-)
  • 另外 - predicate 几乎意味着根据输入来评估真假。我想你在这里想要parameterise - 这意味着用动态值替换。希望有帮助:-)
  • 感谢 RichEdwards。对于其他任何人 - 与变量有关的 " 和 & 的空格是至关重要的,但可能会被您的代码编辑器更正。

标签: vba selenium loops xpath predicate


【解决方案1】:

在你的循环中试试这个:

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

使用 & 连接字符串。

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

在 vb here 中加入字符串的更多信息

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

虽然原则上 + 符号与 & 连接相同 运算符,它还兼作加法运算符。因此,作为 微软声明:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多