在互联网的很多产品中,富文本是经常存在的,因为在富文本中,可以插入图片,插入视频以及对字体等等可以进行调整,对于web的自动化测试人员来说,对于富文本的操作是无法逃避的,对于富文本,处理思路是先获取到iframe的id,通过js来控制,可以实现在富文本中输入我们想要输入的字符。
我们已微信公众平台中,添加素材为案例说明,我们需要在如下富文本输入框输入我们需要添加的文章的内容,见微信公众平台的案例图:
我们鼠标定位到富文本中,html代码只显示为:
<html xmlns="http://www.w3.org/1999/xhtml" webdriver="true">
<head>
<body class="view" contenteditable="true" spellcheck="false" style="overflow-y:hidden; height: 440px; cursor: text;">
</body>
</html>
我们把鼠标再往上移动,会看到iframe,见html代码的截图:
在截图中,我们可以看到iframe的id为:ueditor_0,依据我们操作富文本的思路是:获取到iframe的id,通过js代码:document.getElementById(id).contentWindow.document.body.innerHTML="%s"'%(content)来操作,content就是我们要在富文本中输入的内容。我们写成一个单独的方法就是为:
def richText(content):
js='document.getElementById("ueditor_0").contentWindow.document.body.innerHTML="%s"'%(content)
那么实现对微信公众平台富文本中写入数据的测试代码为:
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions importNoSuchElementException, UnexpectedTagNameException
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.alert import Alert
from time import sleep
defrichText(content):
js='document.getElementById("ueditor_0").contentWindow.document.body.innerHTML="%s"'%(content)
driver.execute_script(js)
#微信公众平台的测试
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://mp.weixin.qq.com/')
driver.find_element_by_id('account').send_keys('weixin isaccount')
driver.find_element_by_id('pwd').send_keys('weixin isaccount password')
driver.find_element_by_id('loginBt').click()
sleep(3)
driver.find_element_by_xpath(".//*[@id='menuBar']/dl[2]/dd[3]/a").click()
nowHandle=driver.current_window_handle
driver.find_element_by_xpath(".//*[@id='js_main']/div[2]/a").click()
handles=driver.window_handles
for handle in handles:
ifnowHandle!=handle:
driver.switch_to_window(handle)
sleep(5)
richText(u"我在进行自动化的测试")
sleep(6)
driver.close()
driver.switch_to_window(nowHandle)
sleep(6)
driver.quit()