findElement By Selenium VBA不支持XPath?

时间:2013-11-21 09:38:25

标签: vba excel-vba xpath selenium selenium-webdriver

variableName = driver.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]"))

运行上述内容似乎总会导致错误:

enter image description here

这是为什么?我总是看到其他人使用findElement By XPath。如果它有帮助,我使用Selenium的“记录”功能生成了大约一半的代码。然后我将代码转换为'VBA / Webdriver',然后将其粘贴到Excel中以用作宏。

我的代码究竟出了什么问题?我以前曾多次使用过findElement,所以我不得不猜测问题出在代码的By.XPath部分......有什么方法可以解决这个问题吗?

编辑:即使variableName = driver.findElementsByXPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")导致错误'无效的过程调用或参数',即使它看起来不错。

3 个答案:

答案 0 :(得分:2)

尝试:

variableName = driver.findElementByXPath("//div[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")

请注意,我删除了xPath开头的.,并将*替换为div。而且,最后你会遗漏一些东西。你只是声明这里的路径,而不是真正得到一个值。

编辑:仅仅提到xPath通常就不够了。您想对其执行操作,获取内部文本,标记名等吗?

EDIT2:测试获取.Text属性会返回“Selenium VBA不支持的findElement By XPath吗?”消息。

答案 1 :(得分:0)

这对我有用:

Dim variableName() as variant

variableName = driver.findElementsByXPath("//div[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]").getdata

注意它是“通过XPath查找元素[复数]”。这会创建一个二维数组。 variableName(1,1)将包含您正在寻找的数据。

答案 2 :(得分:0)

(我知道这已经超过6年了,但这是我的第一个贡献,我无法抗拒!也许可以帮助其他人)

您必须初始化以下内容:

Dim By As New By, variableName As WebElement

,并且由于 variableName 是一个对象,因此必须如下声明:

Set variableName = driver.FindElement(By.Xpath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]"))