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

標籤: ,

About: Kaito


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料