一般输入框有以下几种形式

第一种:短的input框

如百度首页的输入框,<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">,百度输入框的值不在text中,是在value属性中

又验证了一下,自己写的简单的登录界面的输入框,发现确实也是这样的,html代码为

<html>
    <head>
        <meta charset="utf-8">
        <title>html表单作业-2</title>
        <script type="text/javascript">
            function myFunc(){
                var username = document.getElementById("username").value;
                confirm("用户名为:" + username);
            }
        </script>
    </head>
    <body>
        <form>
            用户名:<input type="text" id="username" name="username" />
            <br />
            密码:<input type="password" id="passwd" name="passwd" />
            <br />
            <input type="button" value="登录" onclick="myFunc()" />&nbsp;&nbsp;
            <input type="reset" value="重置" />
        </form>
    </body>
</html>

解决办法:driver.find_element_by_id("kw").send_keys("需要输入的内容")

第二种:div式的editor框

比如QQ邮箱写邮件,因此这种也采用的是send_keys的方法,只不过这个值不在value属性中,而是在text中

第三种:textarea

以博客园的博文评论为例,发现文本值也是保存在value中的

和百度输入框不同,虽然百度输入框中的文本值也是存在value中,但它可以通过send_keys的方法来发送值,但这种必须要用到js

from selenium import webdriver
import time

option = webdriver.ChromeOptions()
option.add_argument("--user-data-dir=C:\\Users\\Beck\\AppData\\Local\\Google\\Chrome\\User Data")
driver = webdriver.Chrome(options=option)
driver.get("https://www.cnblogs.com/cnhkzyy/p/9253272.html")
time.sleep(3)
textarea_element = driver.find_element_by_id("tbCommentBody")
driver.execute_script("arguments[0].focus();", textarea_element)
time.sleep(2)
driver.execute_script("arguments[0].value='test comment'", textarea_element)
time.sleep(2)
driver.find_element_by_id("btn_comment_submit").click()
time.sleep(3)

driver.quit()

可以看到评论的确提交成功了

第四种:iframe中的editor

示例的网站是:http://ueditor.baidu.com/website/examples/completeDemo.html

我们可以看到,内容为空时,直接定位到了body,再仔细看看,原来还有个iframe

有了内容之后,<body>标签下会自动加一些<p>标签,文本内容就在<p>标签的text中

所以,对于这种情况,先切换到iframe,再向<body>标签直接send_keys,简单粗暴

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://ueditor.baidu.com/website/examples/completeDemo.html")
time.sleep(2)

#通过id切换到iframe
driver.switch_to.frame("ueditor_0")
content = """This is a test content!
             This is a test content!
             This is a test content!
          """
driver.find_element_by_tag_name("body").send_keys(content)
print(driver.find_element_by_tag_name("body").text)

运行结果:

python控制台输出:

This is a test content!
             This is a test content!
             This is a test content!

参考文章

https://www.cnblogs.com/xiaobaichuangtianxia/p/5889999.html

selenium对富文本框的处理的更多相关文章

  1. 【自动化测试】Selenium处理富文本框

    http://blog.csdn.net/fudax/article/details/8089404 selenium处理富文本框,日历控件等 调用JS修改value值 document.getEle ...

  2. selenium向富文本框填写内容的几种方式

    富文本框如果是iframe,则用下 1.先跳转到irame,dr.switchTo().frame(wtext); 然后用js JavascriptExecutor jsExecutor = (Jav ...

  3. selenium 富文本框处理

    selenium 富文本框处理, 网上有用API的解决方法1:参见:http://blog.csdn.net/xc5683/article/details/8963621 群里1位群友的解决方法2:参 ...

  4. Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载

    元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...

  5. Selenium示例集锦--常见元素识别方法、下拉框、文本域及富文本框、鼠标操作、一组元素定位、弹窗、多窗口处理、JS、frame、文件上传和下载

    元素定位及其他操作 0.常见的识别元素的方法是什么? driver.find_element_by_id() driver.find_element_by_name() driver.find_ele ...

  6. Selenium向iframe富文本框输入内容

    目录 前言 只输入纯文本 通过JS注入HTML代码 前言 在使用Selenium测试一些CMS后台系统时,有时会遇到一些富文本框,如下图所示: 整个富文本编辑器是通过iframe嵌入到网页中的,手动尝 ...

  7. Java + selenium 元素定位(6)之iframe切换(即对富文本框的操作)

    在元素定位中,对富文本框的元素定位是特别的,当我们使用普通的元素定位方法对富文本框进行操作时,我们会发现不管我们之前介绍的八种方法中的任何方法,我们都不能成功定位到富文本框,并对其进行操作.那是因为富 ...

  8. python webdriver api-操作富文本框

    操作富文本框-就是邮件正文部分,可以选字体啥的 第一种方式: 一般都是在iframe里,要切进去,一般是”html/body”,编辑之后,再切出来,然后再send_keys就完事儿 #encoding ...

  9. webdriver高级应用- 操作富文本框

    富文本框的技术实现和普通的文本框的定位存在较大的区别,富文本框的常见技术用到了Frame标签,并且在Frame里面实现了一个完整的HTML网页结构,所以使用普通的定位模式将无法直接定位到富文本框对象. ...

随机推荐

  1. h5 localStorage本地存储

    用户名:<input type="text" id="txtname"/> 密码:<input type="text" i ...

  2. LINUX 文件/组/帮助/权限/文件压缩/管道

    Linux文件/目录详解 常用文件路径的作用 /var/log/messages 系统类的日志文件 /var/log/secure 登录日志文件 /var/spool/cron 定时任务目录 /etc ...

  3. 检查arg是方法还是函数?

    from types import MethodType,FunctionType def check(arg): """ 检查arg是方法还是函数? :param ar ...

  4. 我的第一个JSP

    首先在新建一个Webproject 再在WebRoot以下new一个HelloWorld.jsp 改动body里面的内容 <body>     <h1>HelloWorld:& ...

  5. PopuWindow和软件盘共存时的设置

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/mingyue_1128/article/details/32316069 一.键盘不消失,popuw ...

  6. 如何用好 Google 等搜索引擎

    1: 双引号短语搜索2: 减号减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词例如:搜索 -引擎返回的则是包含“搜索”这个词,却不包含“引擎”这个词的结果3: 星号RE,通配符4: intit ...

  7. DP专题(不定期更新)

    1.UVa 11584 Partitioning by Palindromes(字符串区间dp) 题意:给出一个字符串,划分为若干字串,保证每个字串都是回文串,同时划分数目最小. 思路:dp[i]表示 ...

  8. PHP下使用Redis消息队列发布微博

    phpRedisAdmin :github地址  图形化管理界面 git clone [url]https://github.com/ErikDubbelboer/phpRedisAdmin.git[ ...

  9. $python正则表达式系列(2)——re模块常用函数

    本文主要介绍正则re模块的常用函数. 1. 编译正则 import re p = re.compile(r'ab*') print '[Output]' print type(p) print p p ...

  10. 吐槽 MySQL数据库jdbc操作,varchar类型占位符问题——单引号造孽

    很长时间不写代码动手能力明显下降很多常见的错误还是经常发生,今天吐血了一次. 简单的坑总是要多跳几次才能甘心.很清晰的记得大学的时候在此坑差点闷死,现在又跳进这个坑了,搞了半天终于知道错在哪里. St ...