1

How can i get this telefoon nummer in string variable.

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

I tried this code without ant success.

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

I am getting this exception for String telno1 line

ErrorHandler$UnknownServerException: missing ) after argument list

please any help thank you

Muratcan
  • 235
  • 2
  • 6
  • 18

5 Answers5

6

You can use this,

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

You just use javascript to extract out the value attribute of the input field. If it were a div or textarea, then you'd like use the innerHTML, innerText, or textContent attributes. like below,

String theTextIWant = ((JavascriptExecutor) driver).executeScript("return arguments[0].innerHTML;",driver.findElement(By.xpath("//span[@itemprop='telephone']")));
nhahtdh
  • 55,989
  • 15
  • 126
  • 162
reshma
  • 641
  • 1
  • 11
  • 18
2

You are mixing a number of things here. You cannot just copy/paste Selenium code and expect it to work in JavaScript.

My suggestion would be to be to first find the element using Selenium's XPath mechanism, and then pass that into a JavaScript string. You are merely working against Selenium's API because it allows you to find elements in variety of ways and it will transform that into an object that can be used in JavaScript for you if you want to.

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

(Untested, unverified code, I do not have a Java IDE to handle, may not compile)

Arran
  • 24,648
  • 6
  • 68
  • 78
1

The inner xpath string does not seems to be formed properly. This is because of the 'Single Quotes' used:

Try replacing:

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

With:

String script = "return   document.getElementByXPath(\"//span[@itemprop='telephone']\").getText();";
                                                      ^                              ^
Vageesh Bhasin
  • 553
  • 2
  • 12
  • Thank you for your suggestion i just tried but now i am getting document.getElementByXPath is not a function error – Muratcan Feb 20 '14 at 14:06
  • Have you defined any 'getElementByXpath' function? I think there isn't any OTB function named 'getElementByXpath'. If you are using Selenium for JS (WebDriverJS), then they have other functions defined. – Vageesh Bhasin Feb 20 '14 at 14:11
0

Try this

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

If works, let us know.

Karthikeyan
  • 2,634
  • 5
  • 30
  • 51
user3487861
  • 340
  • 2
  • 2
0

This will cause error: document.getElementByXPath is not a function

Use document.evaluate insteads. Answer of yckart in this link is helpful.

Hope this helps!

Community
  • 1
  • 1
Huy Hóm Hỉnh
  • 597
  • 7
  • 18