selenium 关于富文本的处理
Posted BlackTest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium 关于富文本的处理相关的知识,希望对你有一定的参考价值。
由于项目需要,涉及到富文本的处理。百度了下,发现已经有人总结的很全了。
大概思路如下:
1.switch_to_frame
2.find_element_by_tag_name(‘body‘).send_keys("123")
链接:http://blog.csdn.net/huilan_same/article/details/52386274
一般输入框有三种:
-
短的input框,如下:
<input id="zenInput2" class="zenInputDemo" type="text" style="position: static;">
-
textarea框,如下:
<textarea id="message1" name="message1"></textarea>
-
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()
结果:
Hello world!
3.div式的editor
这种一样,定位到元素div,直接send_keys就行,不过这个send_keys不是到了‘value’属性中,而是在text中。
# -*- 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,见我的博客:
frame中一般是一个空的html,其中显示的内容即是body中的内容。
以上是关于selenium 关于富文本的处理的主要内容,如果未能解决你的问题,请参考以下文章
Selenium4+Python3系列 - Cookie截图单选框及复选框处理富文本框日历控件操作
Selenium2+python自动化24-js处理富文本(带iframe)