Selenium自動化,一直以為是富文字的問題,原來是切換frame的問題
阿新 • • 發佈:2019-01-24
話不多說,先上原始碼:
<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了。
撒花。。。