龙空技术网

Python+selenium自动化之js富文本定位

说说软件测试那些事儿 41

前言:

当前小伙伴们对“python中selenium定位”可能比较着重,兄弟们都需要了解一些“python中selenium定位”的相关内容。那么小编在网上汇集了一些关于“python中selenium定位””的相关资讯,希望你们能喜欢,看官们快快来学习一下吧!

本篇和上一篇文章Python+selenium自动化之写邮件与富文本定位基本内容一样,仅仅把富文本定位和操作使用JS实现,对JS用法不了解不熟悉的可以百度学习下,或者等着我出一期专门的js用法的文章。

从下图可以看出,正文编辑框属于div式的editor框iframe的id不是固定的,这里使用js用法document.getElementsByClassName()[],注意这里elements要有s,获取的是一个list,要对首位进行操作需要加[0]。contentWindow返回指定的iframe的窗口对象,然后调用document方法获取元素body,innnerHTML意味着标签对之间的内容,把字符串传给body。

源码:

# -*- coding: UTF-8 -*-

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import time

def login(driver, user, pwd):

# 打开腾讯企业邮箱

driver.get(";)

# 点击 账号密码登陆

driver.find_element_by_class_name("js_show_pwd_panel").click()

# 输入 账户

driver.find_element_by_id("inputuin").send_keys(user)

# 输入 密码

driver.find_element_by_id("pp").send_keys(pwd)

# 点击 登录

driver.find_element_by_id('btlogin').click()

#点击 写信

driver.find_element_by_id("composebtn").click()

#进入 iframe

driver.switch_to.frame("mainFrame")

#定位 收件人

time.sleep(3)

driver.find_element_by_css_selector("#toAreaCtrl .addr_text [type='input']"

).send_keys("123456@qq.com")

#定位 主题

driver.find_element_by_id("subject").click()

driver.find_element_by_id("subject").send_keys("这是一个测试主题")

#这里去掉了 tab键操作

#driver.find_element_by_id("subject").send_keys(Keys.TAB)

time.sleep(3)

#JS定位 body 输入字符串“测试微服务!” 这里使用js无需切换iframe

js = 'document.getElementsByClassName("QMEditorIfrmEditArea")[0]' \

'.contentWindow.document.body.innerHTML="%s"' % "测试微服务!"

driver.execute_script(js)

'''

#定位 正文 进入 iframe

zw_fram= driver.find_element_by_class_name("QMEditorIfrmEditArea")

driver.switch_to.frame(zw_fram)

#定位 正文

driver.find_element_by_tag_name("body").send_keys("测试微服务!")

'''

#退出 iframe

driver.switch_to.default_content()

def logout(driver):

# 登录成功 等待页面加载

time.sleep(4)

# 退出登录

driver.find_element_by_partial_link_text("退出").click()

# 用于关闭浏览器,一般测试结束时需要使用

driver.quit()

if __name__ == "__main__":

driver = webdriver.Firefox()

driver.implicitly_wait(20)

user = input("请输入您的邮箱账户:")

pwd = input("请输入您的邮箱密码:")

# 调用login函数

login(driver, user, pwd)

# 调用 logout函数

#logout(driver)

标签: #python中selenium定位 #html文字定位 #js定位页面 #js定位页面输入内容