I\'m trying to figure out how to select the textarea in the code below using xpath and JavaScript (which is the only option here).
The evaluate method does not return a DOM node as you seem to expect. You would need
var element = document.evaluate( '//body//form/p/textarea' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
if (element != null) {
element.value = '...';
}
@Mark Robinson comment is right, your Xpath expression is wrong, you could use one of those :
//body/div/div/form/p/textarea (Mark's example)
//body//form/p/textarea (any form in body)
Plus, the evaluate function will return a XPathResult object, not the textarea, so you can't do directly element.value
Here is your example fixed:
<body>
<div id="calculator">
<div id="calculatorController">
<form action="#" method="get" onsubmit="return false">
<p>
<textarea disabled="disabled"></textarea>
</p>
</form>
</div>
</div>
</body>
--
var element = document.evaluate( '//body/div/div/form/p/textarea' ,document, null, XPathResult.ANY_TYPE, null );
var textarea = element.iterateNext ();
textarea.value = "Hello textarea";