1. 程式人生 > >Selenium自動化,一直以為是富文字的問題,原來是切換frame的問題

Selenium自動化,一直以為是富文字的問題,原來是切換frame的問題

話不多說,先上原始碼: <div position="relative"> <textarea id="artContent" class="span14" name="fckeditorContent" validate-rules="[['required','請填寫$']]" validate-title="正文" style="display: none;" aria-hidden="true"></textarea> <span id="artContent_parent" class="mceEditor defaultSkin" role="application
"
 aria-labelledby="artContent_voice">
<span id="artContent_voice" class="mceVoiceLabel" style="display:none;">Rich Text Area</span> <table id="artContent_tbl" class="mceLayout" cellspacing="0" cellpadding="0" role="presentation" style="width: 680px; height: 300px;"> <tbody
>
<tr class="mceFirst" role="presentation"> <tr class="mceLast"> <td class="mceIframeContainer mceFirst mceLast"> <iframe id="artContent_ifr" frameborder="0" src="javascript:""" allowtransparency="true" title="Rich Text AreaPress ALT-F10 for toolbar. Press ALT-0 for help
"
 style="width: 100%; height: 277px; display: block;">
<!DOCTYPE > <html> <head xmlns="http://www.w3.org/1999/xhtml"> <body id="tinymce" class="mceContentBody " contenteditable="true" onload="window.parent.tinyMCE.get('artContent').onLoad.dispatch();" spellcheck="false" dir="ltr"> <p>

一看原始碼,我以為是富文字問題,網站找了資料怎麼操作富文字的,呼叫富文字API的,我對富文字不熟悉啊,照貓畫虎,做完了不行啊,惆悵的。。。

這個東西selenium ide也錄不了哇,Xpath也找不到啊,沒有出路哇,。。後來問了一大牛,大牛說操作textarea,修改textarea屬性(style="display: none;" aria-hidden="true),,結果試了試,也是不行啊。。。。

沒辦法,在找了些資料,再看看原始碼。。。。。看到了這個  “<!DOCTYPE >” 這個是什麼? frame啊。。。。切frame  試試吧  。。。

終於皇天不負有心人,成功搞定啦。。。。。

上原始碼。。。

WebElement iframe=driver.findElement(By.xpath("//iframe[@id='artContent_ifr']")); //找到iframe
driver.switchTo().defaultContent();//切換到預設內容
driver.switchTo().frame(iframe);//切換到目標frame
driver.findElement(By.xpath("//body[@id='tinymce']")).sendKeys("'<p>'"+content+"'</p>'");//send內容
driver.switchTo().defaultContent();//切回到預設內容

在進行下一步操作就ok了。

撒花。。。