Selenium 在 CKEditor 中輸入文字
在使用 selenium 定位頁面中的元素時
如果元素內容是 CKEditor 這種會產生 iframe 的框架內的話
需用特別的方式來取得 iframe 內的元件
得將 driver 利用 switch_to_frame() 先移到 iframe
這樣就可以取得 iframe 中的元素內容了
如果之後要再回到原本的網頁定位元素
需再將 driver 的焦點移回原本的視窗
底下是範例程式碼 (Python)
""" Python brower 即 driver """ # 取得 ckeditor 的 iframe ckeditor_iframe = browser.find_element(By.CLASS_NAME, ckeditor_iframe_class_name) # 切換到 iframe browser.switch_to.frame(ckeditor_iframe) # 找到 iframe 中的 body body = browser.find_element(By.TAG_NAME, 'body') # 輸入文字 body.send_keys(content) # 焦點要離開 iframe 切換回原本的視窗 for handle in browser.window_handles: browser.switch_to.window(handle)
Reference:
https://stackoverflow.com/questions/49603312/interacting-with-ckeditor-in-selenium-python