Selenium2+python自動化24-js處理富文本(帶iframe)


前言

    上一篇Selenium2+python自動化23-富文本(自動發帖)解決了富文本上iframe問題,其實沒什么特別之處,主要是iframe的切換,本篇講解通過js的方法處理富文本上iframe的問題

一、加載配置

    1.打開博客園寫隨筆,首先需要登錄,這里為了避免透露個人賬戶信息,我直接加載配置文件,免登錄了。

      不懂如何加載配置文件的,看這篇Selenium2+python自動化18-加載Firefox配置

二、打開編輯界面

    1.博客首頁地址:bolgurl = "http://www.cnblogs.com/"

    2.我的博客園地址:yoyobolg = bolgurl + "yoyoketang"

    3.點擊“新隨筆”按鈕,id=blog_nav_newpost

三、定位iframe

    1.打開編輯界面后先不要急着輸入內容,先sleep幾秒鍾

    2.輸入標題,這里直接通過id就可以定位到,沒什么難點

    3.接下來就是重點要講的富文本的編輯,這里編輯框有個iframe,所以需要先切換

(關於iframe不懂的可以看前面這篇:Selenium2+python自動化14-iframe

 

 四、js輸入中文

    1.這里定位編輯正文是定位上圖的紅色框框位置body部分,也就是id=tinymce

    2.定位到之后,用js的方法直接輸入,無需切換iframe

    3.直接點保存按鈕,無需再切回來

 

五、參考代碼:

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# profileDir路徑對應直接電腦的配置路徑
profileDir = r'C:\xxx\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'
profile = webdriver.FirefoxProfile(profileDir)
driver = webdriver.Firefox(profile)

bolgurl = "http://www.cnblogs.com/"
yoyobolg = bolgurl + "yoyoketang"
driver.get(yoyobolg)
driver.find_element_by_id("blog_nav_newpost").click()

time.sleep(5)
edittile = u"Selenium2+python自動化23-富文本"
editbody = u"這里是發帖的正文"
driver.find_element_by_id("Editor_Edit_txbTitle").send_keys(edittile)


body = "這里是通過js發的正文內容"

# js處理iframe問題(js代碼太長了,我分成兩行了)
js = 'document.getElementById("Editor_Edit_EditorBody_ifr")' \
     '.contentWindow.document.body.innerHTML="%s"' % body
driver.execute_script(js)
# 保存草稿
driver.find_element_by_id("Editor_Edit_lkbDraft").click()

在學習過程中有遇到疑問的,可以加selenium(python+java) QQ群交流:646645429

《selenium+python高級教程》已出書:selenium webdriver基於Python源碼案例

(購買此書送對應PDF版本)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM