![](/img/trans.png)
[英]How to press 'Enter' once text is entered in the search field using Selenium WebDriver and java code in eclipse
[英]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('替換為文本')
如果您在一頁上有多個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>
我們使用在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編輯器中輸入文本:
我的表單中有多個tinyMCE編輯器。
解決方案(使用Selenium IDE,可以輕松移植到Selenium RC):
在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解決此問題,已完成以下步驟(請參見截圖)
僅供參考,我已經使用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.