我使用 selenium 自动化网页。
我的问题 selenium 无法在隐藏字段中键入文字。我用了
selenium.type("xpath of hidden field","some text");
但它不起作用。它没有给出任何错误,但没有在隐藏的字段中输入任何内容。
示例:在Gmail的正文字段中输入文字(在撰写邮件时)。 this is the exact example of my issue
这是Rad Editor。所以代码是这样的(这里文本保存在iframe-->html-->body
内)
<iframe id="iframe1">
<html>
<body> This is some text </body>
</html>
</iframe>
答案 0 :(得分:1)
你无法强迫Selenium输入隐藏的元素。
这会有用吗?它使用Javascript的document.evaluate()
通过XPath查找元素,然后直接键入找到的元素value
。
selenium.GetEval(
"var xpath = '//XPath/to/your/element';" +
"var text = 'some text to input into the element'" +
"var elem = window.document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);" +
"elem.singleNodeValue.value = text;" );
如果没有,请尝试在FireBug中运行它并在此处发布结果(或错误)。
接下来要尝试的是尝试使元素可见......
你喜欢在一个地方遇到所有问题:)
iframe
。在尝试与内部任何内容进行交互之前,您必须select it。iframe
从其他域加载任何内容,那么JavaScript的Same origin policy就会启动。而且由于Selenium RC是用纯JavaScript编写的,因此无法执行任何操作。您可以切换到不受此影响的WebDriver
,也可以尝试在iframe
的内部地址重新打开浏览器。但是可能不起作用。body
中的iframe
标记为contenteditable
,这是一个问题solved by WebDriver
。 Selenium RC应该能够type()
进入它。textarea
。那是你的最后一个问题。如果你真的需要写入它(有可编辑的body
),你就必须使用JavaScript,因为Selenium RC拒绝使用不可见的元素。答案 1 :(得分:0)
由于这是 RadEditor ,文字会进入iframe-->html-->body
(这是我的情况。对于不同的编辑可能会有所不同)
因此,为了撰写文字,首先我们需要选择 iframe 。然后我们必须输入文本。这可以作为
完成selenium.SelectFrame("xpath_of_iframe"); //Selecting the iframe
selenium.Type("//html/body","Thank you"); //Inserting the text
所以现在代码变为
<iframe id="iframe1">
<html>
<body> Thank you </body>
</html>
</iframe>
谢谢。