【问题标题】:type into iframe in selenium在 selenium 中输入 iframe
【发布时间】:2012-04-11 19:48:47
【问题描述】:

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

Typing in a IFrame with Selenium IDE

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

使用萤火虫:

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

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

【问题讨论】:

    标签: java iframe selenium selenium-rc xpath


    【解决方案1】:

    这只是意味着你使用了一些错误的 xpath。

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

    这应该可行。它根据 xpath 表达式选择 iframe,该表达式查找标题属性包含“富文本编辑器”的 iframe。

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

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

    【讨论】:

    • selenium.selectFrame("xpath=//iframe[contains(@title,'富文本编辑器')]"); selenium.type("xpath=//iframe[contains(@title,'富文本编辑器')]", tag);但是得到了 Element not found 错误。所以我尝试了 selenium.selectFrame("xpath=//iframe[contains(@title,'Rich text editor, templateWizardCKEditor3, press ALT 0 for help.')]"); selenium.type("xpath=//iframe[contains(@title,'富文本编辑器,templateWizardCKEditor3,按 ALT 0 寻求帮助。')]", tag);但没用。
    • 好吧,如果你想直接写入 iframe,那可能是个问题。在第一个selectFrame()之后,你可以试试this method。写入可编辑的 iframe 很棘手,我猜可以通过 with WebDriver 或类似于此处显示的 JavaScript 来完成。
    • ...因为当您执行selectFrame() 时,您基本上将该框架作为您的新根节点。这意味着如果你想写入框架,你需要调用selenium.type("xpath=/", tag); ...这实际上也可以工作!试一试:)
    • 嗯!我想获得一个可重现的例子。如果您的页面是专有的,您可以尝试创建一个吗?或者iframe 的内容到底是什么?除此之外...试试Selenium Google Groups
    【解决方案2】:

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

    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?

    【讨论】:

      【解决方案3】:
      1. 先选择框架,
      2. 然后点击它,将标题信息(WSYWG)与文本区域分开,
      3. 然后专注于文本区域(tinymce)
      4. 然后发送您的文本以填充该字段(我们有 2 个示例来展示不同的工作对象)
      5. 然后选择Window back to default window (null)

      这是我使用的有效方法:

      <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 2018-04-19
        • 2017-08-15
        • 1970-01-01
        相关资源
        最近更新 更多