Selenium 处理富文本

大多数的网站尤其是论坛,博客这些都会用富文本来代替原来的文本框。对于这种富文本(RichText),我们不能用传统的sendkeys方法来处理,我们可以采用富文本自己的API方法,通过执行JS脚本的方法来处理。
我们来看一个例子:

这个项目目标就是一个富文本,下面是firebug识别出来的信息,通过classname你会发现是找不到元素的,而且使用IDE录制也是无法录制这个输入的。我们来看下网页的源代码,看看里面是怎么定义的。

这个是一个textarea,name为goal,我们用findelementbyname试一下啊,可以找个这个元素,但还是不能输入,在看一下源代码的其他地方

结合上面的我们会发现,这个textarea是经过js处理的了,而且使用的kindeditor,
KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。
OK,我们通过上面的地址找到kindeditor.zh-cn.js这个文件来看一下,

这里告诉我们,我们使用的kindeditor的版本是3.5.6,那么我们去kindeditor的官网看一下3.x系列的API:


KE.html(id, val)设置编辑器的HTML内容。

参数:id:String,编辑器的ID

val: String,HTML字符串

返回值:无

注: 3.5版本开始支持,旧版本可以使用KE.util.setFullHtml(id, val)。

KE.text(id, val)设置编辑器的内容,直接显示HTML代码。

参数:id:String,编辑器的ID

val: String,文本

返回值:无

注: 3.5版本开始支持。


我们找到上面两个方法,我们都来用一下结果:


//使用KE.html
String s = "KE.html('goal','<b>123</b>');";
((JavascriptExecutor)driver).executeScript(s);
//使用KE.text
String s = "KE.text('goal','<b>123</b>');";
((JavascriptExecutor)driver).executeScript(s);


OK,来看下结果吧。
使用ke.html的结果是“123”(123是加粗的),ke.text的结果是“<b>123</b>”(把html语句直接显示出来了)。这就是这两个方法的区别,大家也可以看一下其他的方法。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
在使用 Selenium 向 iframe 富文本框输入内容时,需要先切换到该 iframe,然后再进行输入操作。下面是一个示例代码: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建浏览器实例 driver = webdriver.Chrome() # 打开网页 driver.get("https://example.com") # 等待 iframe 加载完成 wait = WebDriverWait(driver, 10) iframe = wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "iframe_id"))) # 定位富文本框元素 rich_text_area = driver.find_element(By.XPATH, "//textarea[@class='rich-text-area']") # 清除原有内容 rich_text_area.clear() # 输入新内容 rich_text_area.send_keys("要输入的内容") # 切换回默认的上下文 driver.switch_to.default_content() # 其他操作... # 关闭浏览器 driver.quit() ``` 在上述代码,我们首先创建了一个 Chrome 浏览器实例,然后打开了一个网页。接着,我们使用 `WebDriverWait` 等待 iframe 加载完成,并切换到该 iframe。然后,我们通过定位富文本框元素的方式找到该元素,并使用 `clear()` 方法清除原有内容。最后,我们使用 `send_keys()` 方法向富文本框输入新的内容。完成输入后,可以使用 `switch_to.default_content()` 方法切换回默认的上下文,以便进行其他操作。 请注意,上述代码的 `iframe_id`、`rich-text-area` 和其他定位方式需要根据实际的网页结构进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值