2014-02-20 34 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的回答很有幫助。

希望這會有所幫助!

相關問題