2013-11-21 219 views
0
variableName = driver.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")) 

运行上面似乎总是导致错误:findElement XPath在Selenium VBA中不受支持?

enter image description here

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

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

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

+0

添加我的完整代码。 – JimmyK

回答

1

尝试:

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

请注意,我在XPath的开头取出.div更换*。此外,你最后错过了一些东西。你只是在这里宣布道路,并没有真正获得价值。

编辑:引用只是xPath通常不够。你想对它执行一个动作,获取里面的文本,标记名等吗?

EDIT2:测试以获得.Text属性返回“selenium VBA中不支持findElement XPath?”信息。

+0

第一个导致无效的过程或调用,第二个对象不支持此属性或方法...我将在第二个完整代码中进行编辑,以防其他情况导致此问题。 – JimmyK

+0

其实现在我想到了它......我的代码是将一个元素分配给变量而不是我想要的,这是它包含的文本? – JimmyK

+0

@JimmyK:的确如此。我之前没有指出的你的声明是不完整的。这就像指着一个房子的地址,而不是说你想从房子里得到什么。例如,使用上面编辑过的代码('.findElementByXPath ...')并将'.TagName'添加到最后。它应该返回元素的最直接标签,即span。 – Manhattan

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)将拥有你正在寻找的数据。