variableName = driver.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]"))
运行上述内容似乎总会导致错误:
这是为什么?我总是看到其他人使用findElement By XPath。如果它有帮助,我使用Selenium的“记录”功能生成了大约一半的代码。然后我将代码转换为'VBA / Webdriver',然后将其粘贴到Excel中以用作宏。
我的代码究竟出了什么问题?我以前曾多次使用过findElement,所以我不得不猜测问题出在代码的By.XPath
部分......有什么方法可以解决这个问题吗?
编辑:即使variableName = driver.findElementsByXPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")
导致错误'无效的过程调用或参数',即使它看起来不错。
答案 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]"))