selenium之 富文本框和editor編輯器的處理

在羣裏經常會遇到有人問文本框的處理,今天有時間,便寫一點這方面的經驗。

一般輸入框有三種:

短的input框,如下:

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

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


代碼見網頁源碼

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


代碼見網頁源碼

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

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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
結果:

Hello world!
1
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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
結果:

Hello world again!
1
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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
結果:

Hello world again again!
1
其實frame editor的內容一般都是寫在裏面的body裏,最重要的就是切到frame中去,關於frame的定位於switch,見我的博客: 
selenium之 定位以及切換frame(iframe)

frame中一般是一個空的html,其中顯示的內容即是body中的內容。
--------------------- 
作者:huilan_same 
來源:CSDN 
原文:https://blog.csdn.net/huilan_same/article/details/52386274 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章