簡體   English   中英

如何使用Selenium RC for Eclipse Java將文本輸入到tinymce文本區域

[英]How to enter text into tinymce text area using Selenium RC for Eclipse Java

我目前正在嘗試自動化測試用例,在其中我需要為必填的“文本區域”字段輸入值。

文本區域使用TinyMCE 3.4.9

我在網上找到了一個博客,該博客建議selectFrame(包含tinymce的iFrame)焦點(tinymce)類型(tinymce,文本)

這沒有幫助,因為Selenium RC無法找到iframe。 但是,我使用Firefox插件進行了嘗試,至少我可以選擇iframe並集中編輯器,但是我無法輸入任何文本。 使用RC,我似乎無濟於事

我也嘗試使用html編輯器輸入文本。 因此selenium可以模擬單擊按鈕以打開html編輯器,然后RC可能無法找到文本區域,否則我將得到一個錯誤,使得該元素不再附加到DOM(沿着這條線)

抱歉,這聽起來令人困惑。

這為我工作:

命令:runScript目標:tinyMCE.activeEditor.setContent('替換為文本')

http://www.tinymce.com/forum/viewtopic.php?id=27960獲得了它

如果您在一頁上有多個tinyMCE表單,我建議
命令:runScript
目標:tinyMCE.get('textarea_id')。setContent('Your Text')

首先,您切換到框架

// driver is type of IWebDriver
driver.switchTo().frame(frameName or frameIndex);

然后您通過id獲取元素並用文本填充它

 var el = driver.findElement(By.id("tinymce"));
 el.sendKeys("YOUR TEXT");

我能夠使Selenium測試與TinyMCE一起使用的唯一方法是不使用TinyMCE進行測試。

使用某些服務器端向導可以在測試條件下有選擇地禁用TinyMCE插件。

這不會幫助您測試TinyMCE本身的使用,但是您至少可以填寫表格以完成並繼續進行測試... :)

對於Firefox中的TinyMCE 3.4.x和Selenium IDE,這對我有用。 將您的TinyMCE實例的ID替換為以下NAME

<tr>
    <td>type</td>
    <td>dom=document.getElementById('NAME_ifr').contentDocument.body</td>
    <td>Editor content</td>
</tr>

這是基於https://gist.github.com/809728

我們使用在techiebyday.blogspot.com上描述的過程,它在當前版本的Selenium RC(至少為2.20)和TinyMCE(3.4之后)中都很好用 在C#中,它看起來像這樣:

string editorFrameId = editorId + "_ifr";
selenium.Focus(String.Format("dom=document.getElementById('{0}').contentWindow.document.body", editorFrameId));
selenium.GetEval(String.Format("selenium.browserbot.getCurrentWindow().document.getElementById('{0}').contentWindow.document.body.innerHTML = '{1}';", editorFrameId, fillString));

我一直在嘗試使用以下解決方案:

<tr>
  <td>type</td>
  <td>dom=document.getElementById('NAME_ifr').contentDocument.body</td>
  <td>Editor content</td>
</tr>

替換為“ name_ifr”。 首先輸入框架名稱,然后在進入tinymce框架之前將其插入,然后將名稱替換為“ tinymce”,並在進入框架后插入,其中必須遵守所有鍵入的規則。 但是我得到的只是錯誤。 不知何故,我從未在腳本中使用DOM或js命令。 我有什么想念的嗎?

如果頁面中有一個TinyMCE元素:

var obj = ((IJavaScriptExecutor)webDriver).ExecuteScript("tinyMCE.activeEditor.setContent('" + text + "');");

我也無法在tinyMCE編輯器中輸入文本:

  • 火狐20.01
  • tinyMCE 3.4.9
  • 硒IDE 1.10.0

我的表單中有多個tinyMCE編輯器。

解決方案(使用Selenium IDE,可以輕松移植到Selenium RC):

  • 使用firebug,找出替換文本區域的tinymce iframe的id,例如form_editor1_ifr
  • 從此ID剝離“ _ifr”以獲取原始文本區域的ID
  • 在目標中將此ID用於Selenium IDE中的runScript命令:tinyMCE.get('form_editor1_ifr')。setContent('the content');

在Selenium網絡驅動程序PHPUnit_Extensions_Selenium2TestCase中,當您使用以下命令時,此方法有效:

$this-> execute(array('script' => "tinymce.get('cms_cpg_content').setContent('Lorem ipsum dolor sit amet,...')", 'args' => array()));

當您要添加文本時。

WebElement bodyIframe = driver.findElement(By.tagName(“ iframe”)); driver.switchTo()。frame(bodyIframe); WebElement mce = driver.findElement(By.id(“ tinymce”)); mce.sendKeys(“這是為了測試!!!”);

這對我來說很完美

我能夠使用Selenium RC解決此問題,已完成以下步驟(請參見截圖)

  1. 在tinyMCE編輯器上,單擊“高級”選項圖標
  2. 點擊“ <>”源代碼圖標
  3. 出現源代碼彈出窗口,輸入文本,然后單擊“確定”。
  4. 文本出現在TinyMCE編輯器中 在此處輸入圖片說明

僅供參考,我已經使用CSS locator給出了步驟

  • 單擊高級選項按鈕:css = tr [id * ='tinymce'] td * div [aria-label ='Advanced Options']按鈕

  • 單擊源代碼:css = tr [id * ='tinymce'] td * div [aria-label ='源代碼']按鈕

  • 單擊彈出文本區域css = div [class * ='mce-floatpanel'] [aria-label ='Source code'] * textarea

  • 單擊彈出窗口上的“確定”按鈕css = div [class * ='mce-floatpanel'] [aria-label ='Source code'] * div> button:contains('Ok')

  • 驗證tinymce css = body p:contains中包含的文本(正在測試)

希望這能解決您的問題:)

http://odino.org/typing-into-tinymce-with-selenium/ ...看起來像TinyMCE和Selenium IDE掛鈎在3.4.5上不起作用,所以我的推測是此問題已延續到3.4.9。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM