【Python+Selenium】使用send_keys上传文件,自动化测试在博客园自动发布博客

11 篇文章 0 订阅

在学习博客园“叁藏法师”老师的《自动化测试基础篇--Selenium文件上传send_keys》文章后,根据内容也编写了一遍代码,并根据个人理解不同,更新了一下。实现以下几个功能:

1.登录。(滑动验证,仍然需要手动)

2.隐式等待方法

3.为避免博客标题重复,使用了datetime模块

4.博客园上传图片是input控件,所以用send_keys即可上传图片

5.上传图片的控件是新弹窗,所以需要用到iframe切换

6.部分定位Xpath,使用//进行了精简

7.最后进行了简单断言。

from selenium import webdriver
import time
from datetime import datetime

url = 'https://www.cnblogs.com/wangpapa/'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
driver.implicitly_wait(10)

# 点击左侧按钮“新随笔”
add_blog = driver.find_element_by_id('blog_nav_newpost')
add_blog.click()
driver.implicitly_wait(10)

# 输入账号密码,并手动进行验证
username = driver.find_element_by_id("LoginName")
username.send_keys("账号")
password = driver.find_element_by_id("Password")
password.send_keys("密码")
login_button = driver.find_element_by_id("submitBtn")
login_button.click()
driver.implicitly_wait(20)

# 生成当前时间,防止博客标题重复
now_time = str(datetime.now())
# 输入标题
blog_title = driver.find_element_by_id("post-title")
blog_title.send_keys("测试:博客标题" + now_time)

# 点击富文本的按钮“上传图片”
driver.find_element_by_xpath('//*[@id="Editor_Edit_EditorBody_uploadImage"]/span[1]/img').click()
driver.implicitly_wait(10)
# 切换到弹窗的iframe
driver.switch_to.frame("mce_38_ifr")
# 因为是input控件,所以直接用send_keys方法
driver.find_element_by_name('file').send_keys("D:/3.jpg")

# 点击按钮“保存草稿”。原始xpath地址很长,用//精简了一些
driver.find_element_by_xpath("//div[2]/div[3]/div[2]//button[2]").click()

# 验证博客是否添加成功
Prompting = driver.find_element_by_xpath('//div[2]/div[3]/div[2]//cnb-post-saved-info/div[1]/div')
if Prompting.text == "保存成功":
    print("博客添加成功!")
else:
    print("博客添加失败。。。")
    
driver.quit()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python+Selenium+pytest+PO模式是一种常用的Web UI自动化测试框架,下面是一些基本的步骤: 1. 安装pytest和Selenium使用pip install pytest selenium命令进行安装。 2. 创建pytest测试用例:创建一个py文件,使用pytest框架编写测试用例,可以使用Selenium进行web页面的操作和数据的验证。 3. 创建PO模式的页面对象:使用Page Object模式构建页面对象,将页面的元素和操作封装在一个类中,方便管理和维护。 4. 运行pytest测试:使用pytest运行测试用例,并查看测试报告。 5. 使用pytest插件:pytest提供了许多插件,例如pytest-html、pytest-xdist等,可以用来生成HTML测试报告、运行分布式测试等。 下面是一个简单的示例代码: ```python # conftest.py文件 from selenium import webdriver import pytest @pytest.fixture(scope='module') def driver(): driver = webdriver.Chrome() yield driver driver.quit() # test_login.py文件 from pages.login_page import LoginPage def test_login(driver): login_page = LoginPage(driver) login_page.open() login_page.input_username('test') login_page.input_password('test123') login_page.click_submit() assert login_page.get_login_result() == '登录成功' # login_page.py文件 from selenium.webdriver.common.by import By class LoginPage: url = 'http://localhost/login' def __init__(self, driver): self.driver = driver def open(self): self.driver.get(self.url) def input_username(self, username): self.driver.find_element(By.ID, 'username').send_keys(username) def input_password(self, password): self.driver.find_element(By.ID, 'password').send_keys(password) def click_submit(self): self.driver.find_element(By.ID, 'submit').click() def get_login_result(self): return self.driver.find_element(By.ID, 'result').text ``` 在上面的示例中,我们使用了pytest的fixture机制来管理WebDriver对象的生命周期,使用PO模式的页面对象来封装登录页面的元素和操作。我们可以通过执行pytest test_login.py命令来运行测试,并生成测试报告。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值