使用Selenium Web驱动程序从网站获取隐藏文本值的Javascript

时间:2014-02-20 13:53:27

标签: javascript selenium

如何在字符串变量中获取此电话会议号码。

<span itemprop="telephone" class="hidden" id="telefoon_28836_hidden">010 - 79 53 364</span>

我在没有成功的情况下尝试了这段代码。

JavascriptExecutor jse = (JavascriptExecutor)driver;
 String script = "return   document.getElementByXPath('//span[@itemprop='telephone']').getText();";
 String telno1 = ((JavascriptExecutor) driver).executeScript(script).toString();

我收到String telno1 line

的这个例外
ErrorHandler$UnknownServerException: missing ) after argument list

请任何帮助,谢谢

5 个答案:

答案 0 :(得分:3)

你可以使用它,

String theTextIWant = ((JavascriptExecutor) driver).executeScript("return arguments[0].value;",driver.findElement(By.xpath("//span[@itemprop='telephone']")));

您只需使用javascript来提取输入字段的value属性。如果它是div或textarea,那么您需要使用innerHTML,innerText或textContent属性。如下,

String theTextIWant = ((JavascriptExecutor) driver).executeScript("return arguments[0].innerHTML;",driver.findElement(By.xpath("//span[@itemprop='telephone']")));

答案 1 :(得分:2)

你在这里混合了很多东西。您不能只复制/粘贴Selenium代码并期望它在JavaScript中工作。

我的建议是首先使用Selenium的XPath机制找到元素,然后将其传递给JavaScript字符串。您只是在对抗 Selenium的API,因为它允许您以各种方式查找元素,并将其转换为可以在JavaScript 中使用的对象如果您想要。

JavascriptExecutor jse = (JavascriptExecutor)driver;
WebElement element = driver.findElement(By.xpath("//span[@itemprop='telephone']"));
jse.executeScript("return arguments[0].text", element);

(未经验证,未经验证的代码,我没有Java IDE可以处理,可能无法编译)

答案 2 :(得分:1)

内部xpath字符串似乎没有正确形成。这是因为使用了“单引号”:

尝试更换:

String script = "return   document.getElementByXPath('//span[@itemprop='telephone']').getText();";

使用:

String script = "return   document.getElementByXPath(\"//span[@itemprop='telephone']\").getText();";
                                                      ^                              ^

答案 3 :(得分:0)

试试这个

driver.findElement(By.id("telefoon_28836_hidden")).getText();

如果有效,请告诉我们。

答案 4 :(得分:0)

这会导致错误:document.getElementByXPath is not a function

使用document.evaluate代替。 <{3}}中对 yckart 的回答很有帮助。

希望这有帮助!