selenium之 富文本框和editor编辑器的处理

原创 2016年08月31日 16:22:51

更多关于python selenium的文章,请关注我的专栏:Python Selenium自动化测试详解


在群里经常会遇到有人问文本框的处理,今天有时间,便写一点这方面的经验。

一般输入框有三种:

  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编辑器的处理,大概就这些。如果有什么问题或者特殊的情况,可以在博客评论中给我留言。

版权声明:本文为博主原创文章,转载请声明出处并添加原文链接。

selenium+python解决有关富文本框的方法

环境:html代码中iframe没有ID,没有NAME属性,

Selenium2library关键字之富文本框和上传文件

以下操作都要引入Selenium2library库 1、关于富文本输入的关键字 2、本地文件上传(参考链接:http://www.mamicode.com/info-detail-5569...
  • hapasm
  • hapasm
  • 2017年07月17日 15:31
  • 322

Selenium 获取web页面Textarea内的文本信息

通过getText() 方法返回为空, 通过String req = wd.findElement(By.id("req")).getAttribute("value");   解决...

selenium+python 向富文本输入内容

selenium+python 向富文本输入内容
  • xm_csdn
  • xm_csdn
  • 2017年04月20日 11:42
  • 911

selenium python向富文本框中输入内容

基于本人不会JavaScript,不能像大神一样写出很牛X的方法,只能使用者屌丝方法了,不过很容易理解。 我使用的是ueditor富文本框 ...

如何使用python+selenium向富文本编辑器输入内容

备注:一开始自己并不知道自己之前曾经实现的一个功能,就是向富文本编辑器中输入内容。。。当时简单的思路就是先定位到iframe,然后再定位里面的元素。。。实现步骤 首先定位到最外面的 ifra...

selenium+python 文本框输入中文和特殊字符串,报错处理

selenium+python在进行web测试时,对如下的语句报错( 'utf8' codec can't decode byte 0xe6 in position 0: unexpected end...

富文本编辑器中如何让一个Div变成像输入框一样可输入的?

富文本编辑器如何让一个Div变成像输入框一样可输入的?

selenium处理复选框radio

网页上有时候遇到checkbox和radio,一般情况下这两种都是input标签,我们可以通过点击或者发送空格的方式进行选中 试验网页代码checkandradio.html: Checkbo...

ubuntu系统上splinter使用笔记

一、 安装 $ sudo pip install splinter pytest-splinter 二、明天帖代码
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:selenium之 富文本框和editor编辑器的处理
举报原因:
原因补充:

(最多只允许输入30个字)