Selenium向iframe富文本框输入内容

目录

  • 前言
  • 只输入纯文本
  • 通过JS注入HTML代码

前言

在使用Selenium测试一些CMS后台系统时,有时会遇到一些富文本框,如下图所示:

整个富文本编辑器是通过iframe嵌入到网页中的,手动尝试输入内容,发现内容是输入到iframe页面的body中的,

这种富文本框怎么输入呢?
我们也可以直接在body的源码上点击右键选择Edit HTML,输入相应的html代码,达到向富文本框输入的目的,如下下图:

以下是使用Selenium的操作方法

只输入纯文本

如果只输入不带格式的纯文本,可以先切换到这个iframe,然后定位到body,send_keys相应的文本即可,代码如下:

from selenium import webdriver
dr = webdriver.Chrome()

dr.get('http://www.vemmis.com/bjq/index.html')

dr.switch_to.frame('ueditor_0')
dr.find_element('tag name', 'body').send_keys('hello')

运行完,显示如下:

通过JS注入HTML代码

如果想输入带html格式的文本可以通过js注入,代码如下:

from selenium import webdriver
dr = webdriver.Chrome()

dr.get('http://www.vemmis.com/bjq/index.html')

js = "document.querySelector('#ueditor_0').contentDocument.querySelector('body').innerHTML='<h1>Hello</h1>'"
dr.execute_script(js)
  • js脚本中document代表整个文档对象
  • querySelector()中使用css selector语法定位到这个iframe框架
  • 使用contentDocument获取到iframe的文档对象
  • 使用querySelector定位到body节点,修改其内部的html代码

运行完效果如下

原文地址:https://www.cnblogs.com/superhin/p/12051423.html

时间: 2024-10-04 21:22:45

Selenium向iframe富文本框输入内容的相关文章

实现文本框输入内容提示代码实例

实现文本框输入内容提示代码实例:比较人性化的网站一般都是比较讲究细节的,比如文本框输入内容具有提示效果,在默认情况下,文本框有提示文本,当鼠标放入文本框输入文本的时候,提示文本会消失,下面就通过代码实例介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="ht

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

富文本框如果是iframe,则用下 1.先跳转到irame,dr.switchTo().frame(wtext); 然后用js JavascriptExecutor jsExecutor = (JavascriptExecutor) dr; jsExecutor.executeScript("arguments[0].innerHTML = '<p align=\"center\"><strong>钜计划协议</strong></p&

关于MFC文本框输入内容的获取 与 设置文本框的内容

八月要开始做界面了<( ̄︶ ̄)/,然而目前只会用MFC╮(╯▽╰)╭ 好吧,言归正传,设置好文本框后,要获取用户输入的内容,可以用: GetDlgItemText() ; 这个函数有两个参数,第一个参数为文本框的ID号,比如IDC_EDIT3,然后用第二个参数存储其内容; 要想设置某文本框的内容,可以用: SetDlgItemText(); 参数类比之前的获取函数:

Java+Selenium向文本框输入内容以后模仿键盘的&quot;ENTRY&quot;

在自动化测试中我们避免不了要模仿一些键盘上按钮的操作,普通的字母,数字,特殊符号,这些都是很简单的,有时候我们也会模仿"SHIFT","ALT","CONTROL",这些Selenium已经提供了Action了,具体如下: Actions actions = new Actions(driver); actions.keyDown(Keys.CONTROL);//按下,松开control actions.keyDown(Keys.CONTROL)

文本框输入内容智能提示效果

实现效果如图 大体思路: 1.监听文本框事件.这里是用的keyup事件.大家可以尝试用onchange事件.不过感觉keyup事件的效果要好一点. 2.根据输入内容通过ajax异步的方式去访问后台数据. 3.遍历返回数据将数据添加到显示区域. 4.在添加数据的同时给每一条数据加上一些效果,点击其中一条将数据填到文本框,并且提示内容消失. 5.后台数据应该拼接成json格式.我这里的格式是这样的[{"name":"张三","sex","男

js各种验证文本框输入内容格式

输入框不能为空 <input onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('不能为空!')"> 只能输入英文和数字<input onblur="if(/[^0-9a-zA-Z]/g.test(value))alert('有错')"><input onkeyup="value=value.replace(/[^0-9a-zA-Z]/g,'')"/>

验证文本框输入内容类型是汉字

JS代码如下: 1 <script type="text/javascript"> 2 function check() { 3 if (isChina(document.getElementById("Text_Value").value)) { 4 alert("輸入正確"); 5 //do something 6 } 7 else { 8 alert("輸入不正確"); 9 return false; 10

文本框输入内容立即触发事件

1.当输入内容时,立即触发某事件,宜用onkeyup,onchange会有延时. 2.jsp页面中常用的触发方法有: onchange .onkeyup .onblur 3.js中一般去掉on,例如 //自动检索 $("#resetSearch").keyup(function(){ var name = $("#resetSearch").val(); $("#projectListPanel").load(url,function(){ re

利用正则表达式限制网页表单里的文本框输入内容

将以下代码放入输入框就可以了. (1)用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" (2)用正则表达式限制只能输入全角字符: onkeyup="valu