使用selenium在RadEditor中键入文本
我正在使用selenium自动化网页 我的问题是selenium无法在隐藏字段中键入文本。我曾经使用selenium在RadEditor中键入文本,selenium,selenium-rc,rad,hidden-field,radeditor,Selenium,Selenium Rc,Rad,Hidden Field,Radeditor,我正在使用selenium自动化网页 我的问题是selenium无法在隐藏字段中键入文本。我曾经 selenium.type("xpath of hidden field","some text"); 但它不起作用。它不会给出任何错误,但不会在隐藏字段中键入任何内容 示例:在Gmail的正文字段中键入文本(在撰写邮件时)。这正是我的问题的示例 这是Rad编辑器。代码是这样的(这里的文本保存在iframe-->html-->body中) 这是一些文本 您无法强制Selenium在隐藏元素中键
selenium.type("xpath of hidden field","some text");
但它不起作用。它不会给出任何错误,但不会在隐藏字段中键入任何内容
示例:在Gmail的正文字段中键入文本(在撰写邮件时)。这正是我的问题的示例
这是Rad编辑器。代码是这样的(这里的文本保存在iframe-->html-->body
中)
这是一些文本
您无法强制Selenium在隐藏元素中键入内容 这样行吗?它使用Javascript通过XPath查找元素,然后直接在找到的元素的
值中键入
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
。你必须在尝试与里面的任何东西互动之前
如果iframe
从不同的域加载任何内容,那么for-JavaScript将启动。由于Selenium RC是用纯JavaScript编写的,所以它不能做任何事情。您可以切换到不受此影响的WebDriver
,或者尝试在iframe
的内部地址上重新打开浏览器。但这可能行不通
iframe
中的body
标记是contenteditable
,这是一个问题。Selenium RC也应该能够type()
一个不可见的文本区域
。这是你的最后一个问题。如果您真的需要写入它(有可编辑的主体
),您必须使用JavaScript,因为Selenium RC拒绝使用不可见的元素
您无法强制Selenium在隐藏元素中键入内容
这样行吗?它使用Javascript通过XPath查找元素,然后直接在找到的元素的值中键入
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
。你必须在尝试与里面的任何东西互动之前
如果iframe
从不同的域加载任何内容,那么for-JavaScript将启动。由于Selenium RC是用纯JavaScript编写的,所以它不能做任何事情。您可以切换到不受此影响的WebDriver
,或者尝试在iframe
的内部地址上重新打开浏览器。但这可能行不通
iframe
中的body
标记是contenteditable
,这是一个问题。Selenium RC也应该能够type()
一个不可见的文本区域
。这是你的最后一个问题。如果您真的需要写入它(有可编辑的主体
),您必须使用JavaScript,因为Selenium RC拒绝使用不可见的元素
由于这是一个RadEditor,文本将进入iframe-->html-->正文
(这是我的情况。对于不同的编辑器可能不同)
因此,为了编写文本,首先我们需要选择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>
非常感谢。
谢谢。由于这是一个RadEditor文本放在iframe-->html-->正文
中(这是我的情况。对于不同的编辑器可能不同)
因此,为了编写文本,首先我们需要选择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>
非常感谢。
谢谢。在C#中,很明显,这是一个JS限制和安全策略,我不能确定确切的原因。羞耻。您可以尝试使元素可见,但很可能会遇到相同的问题。这条路不行。我怀疑你现在能做什么。嗨,斯莱纳克。我已经添加了一个我试图添加文本的字段的快照。请看一下。这里隐藏的字段意味着它就像Gmail的身体字段一样。即使它没有记录任何东西,Gmail的body字段也隐藏在iframe
中!这就是安全异常的原因-。您必须在与Selenium RC交互之前,也是。在C#中,很明显,这是一个JS限制和安全策略,我不能确定确切的原因。羞耻。您可以尝试使元素可见,但很可能会遇到相同的问题。这条路不行。我怀疑你现在能做什么。嗨,斯莱纳克。我已经添加了一个我试图添加文本的字段的快照。请看一下。这里隐藏的字段意味着它就像Gmail的身体字段一样。即使它没有记录任何东西,Gmail的body字段也隐藏在iframe
中!这就是安全异常的原因-。您必须在与Selenium RC交互之前,也