selenium 關於富文本的處理


由於項目需要,涉及到富文本的處理。百度了下,發現已經有人總結的很全了。

大概思路如下:

1.switch_to_frame

2.find_element_by_tag_name('body').send_keys("123") 

鏈接:http://blog.csdn.net/huilan_same/article/details/52386274

  一般輸入框有三種:

  1. 短的input框,如下:

    input

    <input id="zenInput2" class="zenInputDemo" type="text" style="position: static;">
    
  2. textarea框,如下:

    textarea

    <textarea id="message1" name="message1"></textarea>
    
  3. div式的editor框,如下: 
    editor1

    代碼見網頁源碼

  4. 也可能是更復雜的iframe的editor,如下: 
    editor2

    代碼見網頁源碼

下面依次看看這幾種輸入框該怎么解決:

1. input

其實這個只是列在這里,input該如何處理,我想懂點selenium的都知道怎么辦。

2.textarea

很簡單,定位到元素,直接send_keys就行。

示例網址:http://www.sucaijiayuan.com/api/demo.php?url=/demo/20150325-1

代碼:

# -*- coding: utf-8 -*- from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get('http://www.sucaijiayuan.com/api/demo.php?url=/demo/20150325-1') driver.maximize_window() driver.switch_to.frame('iframe') driver.find_element_by_id('message1').send_keys('Hello world!') # 很簡單,直接send_keys就行 sleep(2) print driver.find_element_by_id('message1').get_attribute('value') driver.quit()

 

 

結果:

Hello world!

 

3.div式的editor

這種一樣,定位到元素div,直接send_keys就行,不過這個send_keys不是到了‘value’屬性中,而是在text中。

示例網址:http://www.sucaijiayuan.com/api/demo.php?url=/demo/基於bootstrap的輕量級jQuery文本編輯器插件%20LineControl/index.html

# -*- coding: utf-8 -*- from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get('http://www.sucaijiayuan.com/api/demo.php?url=/demo/%E5%9F%BA%E4%BA%8Ebootstrap%E7%9A%84%E8%BD%BB%E9%87%8F%E7%BA%A7jQuery%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8%E6%8F%92%E4%BB%B6%20LineControl/index.html') driver.maximize_window() driver.switch_to.frame('iframe') driver.find_element_by_class_name('Editor-editor').send_keys('Hello world again!') # 沒什么區別,也是直接send_keys sleep(2) print driver.find_element_by_class_name('Editor-editor').text driver.quit()

 

結果:

Hello world again!

4.iframe中的editor

這種是最復雜的一種,但要搞明白了,其實也很簡單。

示例網址:http://ueditor.baidu.com/website/examples/completeDemo.html

代碼:

# -*- coding: utf-8 -*- from selenium import webdriver driver = webdriver.Chrome(executable_path='D:\py\AutoTestFramework\drivers\chromedriver.exe') driver.get('http://ueditor.baidu.com/website/examples/completeDemo.html') driver.switch_to.frame('ueditor_0') # 注意,這種editor一定有frame,一定要切frame body_string = """Hello world again again! Hello world again again! Hello world again again! Hello world again again!""" driver.find_element_by_tag_name('body').send_keys(body_string) # 直接往frame里的body里填內容,是不是很簡單粗暴 print driver.find_element_by_tag_name('body').text driver.quit()

結果:

Hello world again again!

其實frame editor的內容一般都是寫在里面的body里,最重要的就是切到frame中去,關於frame的定位於switch,見我的博客: 


selenium之 定位以及切換frame(iframe)

frame中一般是一個空的html,其中顯示的內容即是body中的內容。

關於輸入框、富文本框、editor編輯器的處理,大概就這些。如果有什么問題或者特殊的情況,可以在博客評論中給我留言。


免責聲明!

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



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