在硒中输入iframe

时间:2012-03-28 08:30:27

标签: java iframe selenium selenium-rc xpath

我需要将数据输入iframe。我提到了

Typing in a IFrame with Selenium IDE

selenium.selectFrame(<xpath>)返回:Element not found error并且没有为iframe定义css。

使用firebug:

<iframe frameborder="0" allowtransparency="true" tabindex="0" src="" title="Rich text editor, templateWizardCKEditor1, press ALT 0 for help." style="width: 100%; height: 100%;"/>

有什么可以解决这个问题?

3 个答案:

答案 0 :(得分:6)

我找到了相同的解决方案......

driver.switchTo().frame("ext-gen298");
WebElement editable = driver.switchTo().activeElement();
editable.sendKeys("Your text here");
driver.switchTo().defaultContent();

参考:http://code.google.com/p/seleniumwikiFrequentlyAskedQuestions#Q:_How_do_I_type_into_a_contentEditable_iframe

答案 1 :(得分:3)

这只是意味着你使用了一些糟糕的xpath。

selenium.selectFrame("xpath=//iframe[contains(@title,'Rich text editor')]");

这应该有效。它根据xpath表达式选择iframe,该表达式查找iframe,其中title属性包含“Rich text editor”。

有关更多x路径,请参阅XPath v1.0 on w3.orgXPath v2.0 on w3.org - only for some browsers

顺便说一句,iframe也可以由css选择器选择,即使它没有分配css。选择器可以根据它在树层次结构中的位置和它的属性来选择任何元素 - 类似于XPath。要了解css选择器,请尝试The w3 againwikipedia

答案 2 :(得分:0)

  1. 首先选择框架,
  2. 然后单击它以将标题信息(WSYWG)与文本区域分开,
  3. 然后专注于文本区域(tinymce)
  4. 然后发送您的文字以填充该字段(我们有2个示例来显示有效的不同对象)
  5. 然后选择Window返回默认窗口(null)
  6. 以下是我用过的方法:

    <td>selectFrame</td>
    <td>xpath=//*[contains (@id, 'mce_0_ifr')]</td>
    <td></td>
    
    <td>click</td>
    <td>xpath=//*[contains (@id, 'tinymce')]</td>
    <td></td>
    
    <td>focus</td>
    <td>xpath=//*[contains (@id, 'tinymce')]</td>
    <td></td>
    
    <td>sendKeys</td>
    <td>xpath=//*[contains (@id, 'tinymce')]</td>
    <td>I Typed in an iFrame!!!</td>
    
    <td>sendKeys</td>
    <td>css=body#tinymce.mceContentBody</td>
    <td>0</td>
    
    <td>selectWindow</td>
    <td>null</td>
    <td></td>