IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> selenium中的上传操作 -> 正文阅读

[开发测试]selenium中的上传操作

input标签类型

如果是input,可以直接输入路径,那么我们就直接调用send_keys输入路径。
比如163邮箱写信时的添加附件功能,就是input标签:
在这里插入图片描述
实现代码:

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait


driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://mail.163.com")

# 等待登录frame加载到dom树中,切换
login_form_loc = (By.XPATH, '//div[@id="loginDiv"]/iframe')
WebDriverWait(driver, 30).until(EC.frame_to_be_available_and_switch_to_it(login_form_loc))  # frame_to_be_available_and_switch_to_it这个方法是等待frame可用并切换至此frame


# 定位账户按钮,并输入内容
driver.find_element_by_xpath('//input[@name="email"]').send_keys("163账户")

# 定位密码框,并输入内容
driver.find_element_by_xpath('//input[@name="password"]').send_keys("密码")

# 定位登录按钮并点击
driver.find_element_by_xpath('//a[@id="dologin"]').click()

# 切换至默认frame
driver.switch_to.default_content()

# 等待写信按钮可见
write_button = (By.XPATH, '//ul/li[2]/span[@class="oz0"]')
WebDriverWait(driver, 30).until(EC.visibility_of_element_located(write_button))

# 定位写信按钮,并点击
driver.find_element(*write_button).click()

# 等待上传附件元素加载到dom树中
# upload_file_loc = (By.XPATH, '//div[@class="ia0"]/div[1]/div/input')
upload_file_loc = (By.XPATH, '//div[contains(@title, "一次可发送")]/input')
WebDriverWait(driver, 30).until(EC.presence_of_element_located(upload_file_loc))

# 使用send_keys传入文件路径
driver.find_element(*upload_file_loc).send_keys("D:\\文件文档\\os.docx")

非input标签类型

非input标签类型,需要借助第三方工具。
下面是使用pywin32(安装:pip install pywin32)封装好的上传类,只要出现Windows上传窗口后,直接调用就可以了:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2021/10/10 16:19
# @Author : admin
# @File : sel_lesson_upload.py
# @Software: PyCharm

import win32gui
import win32con

"""
1.找到输入框和打开按钮
2.输入地址,点击打开
"""


# 前提,Windows上传窗口已出现,sleep 2秒等待弹出的出现
def upload(filePath, browser_type="chrome"):
	browser_type = browser_type.lower()
    # 根据不同的浏览器,确认弹窗界面的title。
    if browser_type == "chrome":
        title = "打开"
    elif browser_type == "Edge":
        title = "打开"
    elif browser_type == "firefox":
        title = "文件上传"
    else:
        title = ""

    # 找元素
    # 找窗口 #32770, 打开
    dialog = win32gui.FindWindow("#32770", title)
    ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)  # 二级
    comboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, "ComboBox", None)  # 三级
    # 编辑按钮
    edit = win32gui.FindWindowEx(comboBox, 0, 'Edit', None)  # 四级
    button = win32gui.FindWindowEx(dialog, 0, 'Button', "打开(&0)")  # 四级

    # 向编辑框中,输入文件路径
    win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filePath)
    win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)

效果:
在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-12 23:46:32  更:2021-10-12 23:46:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:26:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码