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

第一种:短的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. 比较运算符compareTo()、equals()、==之间的区别

    前言 首先再次强调hashcode (==)和equals的真正含义(我记得以前有人会说,equals是判断对象内容,hashcode是判断是否相等之类): equals:是否同一个对象实例.注意,是 ...

  2. TGraphicControl(自绘就2步,直接自绘自己,不需要调用VCL框架提供的函数重绘所有子控件,也不需要自己来提供PaintWindow函数让管理框架来调用)与TControl关键属性方法速记(Repaint要求父控件执行详细代码来重绘自己,还是直接要求Invalidate无效后Update刷新父控件,就看透明不透明这个属性,因为计算显示的区域有所不同)

    TGraphicControl = class(TControl) private FCanvas: TCanvas; procedure WMPaint(var Message: TWMPaint) ...

  3. 2015.7.14(大盘结束红色,中色连坐4T)

    中色今天的盘面相当有意思,现场直播庄家和散户斗法我估计中色要拉涨停了,不过你别跟,现在很危险了——就算是涨停,明天一个低开就把你给绕进去了 1.今天开市9:42发现中色的地位买入点良机16.13,此时 ...

  4. 【转】Python爬虫(4)_selenium模块

    一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...

  5. linux练习命令

    任务一:按要求完成以下操作1)显示日期格式2)在/tmp/下新建目录test ,并指定权限6643)显示环境变量path,但将/root加入到$PATH中4)用cat显示/etc/passwd,并打印 ...

  6. 前端 初级篇(CSS)

    CSS 简介 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:styl ...

  7. Yii2.0数据库查询实例(三)

    常用查询: // WHERE admin_id >= 10 LIMIT 0,10 User::find()->])->offset()->limit()->all() / ...

  8. iOS 关于远程推送(push) 的几个问题

    1  push 基本流程原理    (1)启动 app      (2)注册远程通知    (3)苹果服务器回调一个deviceToken "didRegisterForRemoteNoti ...

  9. C# TreeView,递归循环数据加载到treeView1中

    TblAreaBLL bll = new TblAreaBLL(); private void button1_Click(object sender, EventArgs e) { LoadData ...

  10. DataTable Group By或运算 Linq Aggregate的使用

    class Program { static void Main(string[] args) { DataTable dt = new DataTable(); dt.Columns.Add(&qu ...