使用selenium在RadEditor中键入文本

使用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自动化网页

我的问题是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交互之前,也