Selenium向iframe富文本框輸入內容


前言

在使用Selenium測試一些CMS后台系統時,有時會遇到一些富文本框,如下圖所示:

整個富文本編輯器是通過iframe嵌入到網頁中的,手動嘗試輸入內容,發現內容是輸入到iframe頁面的body中的,

這種富文本框怎么輸入呢?
我們也可以直接在body的源碼上點擊右鍵選擇Edit HTML,輸入相應的html代碼,達到向富文本框輸入的目的,如下下圖:

以下是使用Selenium的操作方法

只輸入純文本

如果只輸入不帶格式的純文本,可以先切換到這個iframe,然后定位到body,send_keys相應的文本即可,代碼如下:

from selenium import webdriver
dr = webdriver.Chrome()

dr.get('http://www.vemmis.com/bjq/index.html')

dr.switch_to.frame('ueditor_0')
dr.find_element('tag name', 'body').send_keys('hello')

運行完,顯示如下:

通過JS注入HTML代碼

如果想輸入帶html格式的文本可以通過js注入,代碼如下:

from selenium import webdriver
dr = webdriver.Chrome()

dr.get('http://www.vemmis.com/bjq/index.html')

js = "document.querySelector('#ueditor_0').contentDocument.querySelector('body').innerHTML='<h1>Hello</h1>'"
dr.execute_script(js)

  • js腳本中document代表整個文檔對象
  • querySelector()中使用css selector語法定位到這個iframe框架
  • 使用contentDocument獲取到iframe的文檔對象
  • 使用querySelector定位到body節點,修改其內部的html代碼

運行完效果如下


免責聲明!

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



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