目錄
前言
在使用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代碼
運行完效果如下