使用selenium在RadEditor中键入文本

时间:2012-06-22 06:58:42

标签: selenium selenium-rc rad hidden-field radeditor

我使用 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>

Field where i am trying to add text

2 个答案:

答案 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中运行它并在此处发布结果(或错误)。


接下来要尝试的是尝试使元素可见......


编辑 - 以上将无效

你喜欢在一个地方遇到所有问题:)

  1. iframe。在尝试与内部任何内容进行交互之前,您必须select it
  2. 如果iframe从其他域加载任何内容,那么JavaScript的Same origin policy就会启动。而且由于Selenium RC是用纯JavaScript编写的,因此无法执行任何操作。您可以切换到不受此影响的WebDriver,也可以尝试在iframe的内部地址重新打开浏览器。但是可能不起作用。
  3. body中的iframe标记为contenteditable,这是一个问题solved by WebDriver。 Selenium RC应该能够type()进入它。
  4. 隐形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>

谢谢。