VBA Selenium -计算xPath文本的出现次数



数据提取的一部分是使用XPath查找文本名称。然后在工作表中查找文本名称以查找行号。另外两个XPath数据被提取并添加到行号中。

问题是网页中出现了4次相同的单词"Duet"因此,第一个出现的文本名称(相同的行号)被覆盖4次

我知道Count会告诉我"duet"这个词出现了4次。

是否有一种方法可以找到特定XPath文本名称是文本"duet"的第1、第2、第3或第4次出现?

'Find Name
DIV_Name = .FindElementByXPath("/html/body/ui-view/main/div[1]/div[1]/ui-view/div/ui-view/div[4]/div/section/table[2]/tbody/tr[3]/td[1]").Text
TRow = Sheets("Import").Range("A:A").Find(what:=DIV_Name, LookIn:=xlValues, LookAt:=xlWhole).row
'Extract data
MyString = .FindElementByXPath("/html/body/ui-view/main/div[1]/div[1]/ui-view/div/ui-view/div[4]/div/section/table[2]/tbody/tr[3]/td[2]").Text
Sheets("Import").Range("G" & TRow) = MyString
'Extract data
MyString = .FindElementByXPath("/html/body/ui-view/main/div[1]/div[1]/ui-view/div/ui-view/div[4]/div/section/table[2]/tbody/tr[3]/td[3]").Text
Sheets("Import").Range("H" & TRow) = MyString

计算xPath文本出现次数

您可以使用findElements方法来计算出现次数。在下面的示例中,您可能需要根据您的需求更改xPath

代码# 1:

r = .FindElementsByXPath("//*[text()='Duet']").Count
Debug.Print r

输出# 1:

4

是否有一种方法可以找到特定的XPath文本名称是否为第一次,第二次,第三次或第四次出现文本"二重唱"?

代码# 2:

For i = 1 To r
MyString = .FindElementByXPath("(//*[text()='Duet'])[" & i & "]").Text
Debug.Print MyString & " text at xPath " & i
Next i

输出# 2:

Duet text at xPath 1
Duet text at xPath 2
Duet text at xPath 3
Duet text at xPath 4

您可以创建像

这样的XPath
//*[text()="Duet"]

你可以传递索引你需要的出现,例如,你需要第一个出现,然后传递

(//*[text()="Duet"])[1]

最新更新