2014-02-20 35 views
0

如何在字符串变量中获取此telefoon nummer。使用Selenium Web驱动程序获取网站隐藏文本值的脚本

<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(); 

我得到这个例外字符串telno1线

ErrorHandler$UnknownServerException: missing) after argument list 

请任何帮助,谢谢

回答

1

内部XPath字符串似乎并不适当地形成。这是因为所使用的 '单引号' 的:

尝试更换:

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

有了:

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

谢谢你的建议,我只是尝试,但现在我得到document.getElementByXPath不是一个函数错误 – Muratcan

+0

你定义了任何'getElementByXpath'函数?我认为没有任何名为'getElementByXpath'的OTB函数。 如果您使用Selenium for JS(WebDriverJS),那么他们定义了其他函数。 –

1

您在这里混合了一些事情。你不能复制/粘贴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来处理,可能无法编译)

0

试试这个

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

如果作品,让我们知道。

2

您可以使用此,

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

你只需要使用JavaScript来提取出输入字段的值属性。如果它是div或textarea,那么您想使用innerHTML,innerText或textContent属性。如下图所示,

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

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

使用document.evaluate insteads。 yckart在这个link的回答很有帮助。

希望这会有所帮助!

相关问题