python UI自动化使用send_keys() + paramiko 上传文件

还是上篇文章提到的场景 这次是在从liunx服务器上拿文件的情况下,需要通过 Python 自动化脚本从服务器上获取已经下载好的升级包,然后上传到测试平台。这个时候在处理与 Linux 服务器的文件交互时,可以使用 paramiko 库来进行 SSH 连接与文件传输
 

目录

步骤概述

设置与代码示例

代码示例

详细说明

注意事项


步骤概述

  1. 连接到 Linux 服务器,下载文件:使用 paramiko 连接到服务器并下载文件到本地。
  2. selenium 上传文件到目标平台:通过浏览器自动化工具将文件上传。

设置与代码示例

首先,要确保你已安装 paramikoselenium。可以用以下命令安装:

pip install paramiko selenium webdriver_manager

代码示例

import os
import paramiko
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

def download_from_linux_server(ssh_host, ssh_username, ssh_password, remote_path, local_path):
    # 建立 SSH 和 SFTP 连接
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ssh_host, username=ssh_username, password=ssh_password)

    sftp = ssh.open_sftp()
    sftp.get(remote_path, local_path)
    sftp.close()
    ssh.close()

# 连接到 Linux 服务器并下载文件
ssh_host = 'your-linux-server.com'
ssh_username = 'your-username'
ssh_password = 'your-password'
remote_file_path = '/path/on/linux/upgrade-package.zip'
local_file_path = '/tmp/upgrade-package.zip'
download_from_linux_server(ssh_host, ssh_username, ssh_password, remote_file_path, local_file_path)

# 使用 Selenium 上传文件
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

driver.get('http://platform.com/upload')  # 替换为目标上传平台 URL

# 找到文件上传输入框,并上传文件
file_input = driver.find_element(By.ID, 'file-upload')  # 替换为表单上传元素的 ID
file_input.send_keys(local_file_path)

# 点击确认按钮进行升级
confirm_button = driver.find_element(By.ID, 'confirm-button')  # 替换为确认按钮的 ID
confirm_button.click()

# 验证升级是否成功
# 在此处添加验证页面的逻辑,比如检查特定元素

# 关闭浏览器
driver.quit()

# 清理本地文件
os.remove(local_file_path)

详细说明

  • SSH 和 SFTP 的连接

    • 使用 paramiko.SSHClient() 建立连接并进行身份验证。
    • 使用 sftp.get() 下载远程文件到本地。
  • 文件上传

    • 用 Selenium 打开平台页面,找到上传元素并发送文件路径。
    • 找到确认按钮并点击提交。
  • 清理文件

    • 完成测试后,删除本地存储的升级包以释放空间。

注意事项

  • 身份验证:为安全起见,考虑使用 SSH 密钥进行服务器连接而不是明文密码。
  • 元件定位:确保 Selenium 中用于上传和确认的元素识别方式与页面结构一致。
  • 网络连接:对连接稳定性要确保,尤其是远程服务器间的传输。
  • 文件存储:根据实际测试环境,临时存储路径可能需要调整。

通过组合使用 paramikoselenium,可以实现从 Linux 服务器到测试平台的自动化文件传输和上传测试。这种方法高效地消除了手动文件传输的步骤,并确保测试流程的一致性和准确性。

你可能感兴趣的:(python,自动化,开发语言)