1

我正在使用selenium自动化网页。

我的问题是selenium无法在隐藏字段中键入文本。我用了

selenium.type("xpath of hidden field","some text");

但它不起作用。它没有给出任何错误,但没有在该隐藏字段中输入任何内容。

示例:在 Gmail 的正文字段中输入文本(在撰写邮件时)。 this is the exact example of my issue

这是 Rad 编辑器。所以代码是这样的(这里的文本保存在里面iframe-->html-->body

<iframe id="iframe1">
<html>
<body> This is some text </body>
</html>
</iframe>

我尝试添加文本的字段

4

2 回答 2

1

您无法强制 Selenium 输入隐藏元素。

这行得通吗?它使用 Javascriptdocument.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。在尝试与内部的任何东西交互之前,您必须选择它。
  2. 如果iframe从不同的域加载任何东西,那么 JavaScript 的同源策略就会启动。而且由于 Selenium RC 是用纯 JavaScript 编写的,它不能做任何事情。您可以切换到WebDriver哪个不受此影响,或者尝试在iframe. 不过可能行不通。
  3. 中的body标签iframecontenteditable解决WebDriver的问题。Selenium RC 也应该能够type()进入它。
  4. 一个看不见的textarea。那是你的最后一个问题。如果你真的需要写入它(有可编辑的body),你将不得不使用 JavaScript,因为 Selenium RC 拒绝使用不可见的元素。
于 2012-06-26T08:07:21.420 回答
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>

谢谢你。

于 2012-06-27T05:50:18.267 回答