import unittest
from time import sleep import os
from selenium import webdriver
import win32api
import win32con
import win32clipboard as cut from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC def shearPlate(copyString):
cut.OpenClipboard()
cut.EmptyClipboard()
cut.SetClipboardData(win32con.CF_UNICODETEXT, copyString)
cut.CloseClipboard()
# 设置剪切板内容 VK_CODE = {
"ctrl":17,
"v":86,
"enter":13
}
# 键盘映射字典 def keyDown(keyName):
win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)
# 按下按键 def keyUp(keyName):
win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)
# 松开按键 class UploadPicture(unittest.TestCase): def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.get("https://www.baidu.com/")
self.driver.implicitly_wait(15) def test_uploadPicture(self):
self.driver.find_element_by_xpath(".//*[@id='form']/span[1]/span").click()
# 点击百度相机图标
WebDriverWait(self.driver, 15).until(
lambda x: x.find_element_by_xpath(".//*[@id='form']/div/div[2]/div[2]/input"))
self.driver.find_element_by_xpath(".//*[@id='form']/div/div[2]/div[2]/input").click()
# 点击本地上传图片
sleep(2) projectPath = os.getcwd()
# 获取当前工程的路径
shearPlate(projectPath + "\\img.jpg")
# 把图片路径复制粘贴到剪切板中 keyDown("ctrl")
keyDown("v")
# 按下Ctrl+V keyUp("ctrl")
keyUp("v")
# 松开Ctrl+V keyDown("enter")
# 按下回车键
keyUp("enter")
# 松开回车键
sleep(8) searchResultTitle = self.driver.title
baiduImageTitle = "百度识图——以图搜信息,发现更多可能"
WebDriverWait(self.driver, 15).until(EC.title_is(baiduImageTitle)) self.assertEqual(searchResultTitle, baiduImageTitle) def tearDown(self):
self.driver.close()
self.driver.quit() if __name__ == '__main__':
unittest.main()

Selenium(Python)调用pywin32上传图片的更多相关文章

  1. Selenium+Python:下载文件(Firefox 和 Chrome)

    引自  https://blog.csdn.net/Momorrine/article/details/79794146 1.      环境 操作系统 Win10 IDE Eclipse (Oxyg ...

  2. selenium+python自动化77-autoit文件上传

    前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...

  3. selenium+python自动化77-autoit文件上传【转载】

    前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...

  4. selenium + python自动化测试环境搭建

    selenium的在python平台的搭建: 搭建平台windows 准备工具如下: --------------------------------------------------------- ...

  5. <译>Selenium Python Bindings 5 - Waits

    如今,大多数的Web应用程序使用AJAX技术.当页面加载到浏览器,页面中的元素也许在不同的时间间隔内加载.这使得元素很难定位,如果在DOM中的元素没有呈现,它将抛出ElementNotVisibleE ...

  6. <译>Selenium Python Bindings 2 - Getting Started

    Simple Usage如果你已经安装了Selenium Python,你可以通过Python这样使用: #coding=gbk ''' Created on 2014年5月6日 @author: u ...

  7. [译]Selenium Python文档:二、初步开始

    2.1.简单使用 如果已经安装好了Selenium Python,你就可以像下面这样编写Python代码来使用它了: from selenium import webdriver from selen ...

  8. [译]Selenium Python文档:五、Waits等待

    大多数现代web应用都使用了AJAX技术.当浏览器加载一个页面的时候,该页面内的元素可能在不用的时间间隔内进行加载.这使得元素定位变得比较困难:如果一个元素还没有出现在DOM中,定位函数将会抛出一个E ...

  9. Python调用C# Com dll组件实战

    之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael类,而非AES的四种模式(ECB.CBC.CFB.OFB,这四种用的是RijndaelManaged类),Python下Crypt ...

随机推荐

  1. 20165214 2018-2019-2 《网络对抗技术》Exp6 信息搜集与漏洞扫描 Week9

    <网络对抗技术>Exp6 信息搜集与漏洞扫描 Week9 一.实验目标与内容 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 使用搜索 ...

  2. 转:Json序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...

  3. OSMboxPend()

    1. 原型:void   *OSMboxPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) 2. 参数意义: pevent :消息邮箱 timeout ...

  4. 二、Shiro 认证开发

    I.java开发 环境准备 <dependencies> <dependency> <groupId>junit</groupId> <artif ...

  5. android软件开发基础

    1.android特性:开放性:开源的一个基础, 方便性: 平等性: 2.Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,Broadc ...

  6. 【Hive五】Hive函数UDF

    Hive函数 系统自带的函数 查看系统自带的函数 查看系统自带的函数 show functions; 显示自带的函数的用法 desc function upper; 详细显示自带的函数的用法 desc ...

  7. 自添加LUCI菜单及编译为ipk

    目录 添加汉化编译为ipk配置文件入口函数界面文件Makefile 添加 添加自己的luci界面,有3个必要的要素: a配置文件.新建一个在/etc/config/abcdefg b入口函数.新建一个 ...

  8. Linux字符设备驱动--No.2

    分析中断注册函数:request_irq int butsOpen(struct inode *p, struct file *f) { int irq; int i; ; printk(KERN_E ...

  9. shazam音乐检索算法 附完整c代码

    在讲算法之前,上一些前人的资料. http://coding-geek.com/how-shazam-works/ https://laplacian.wordpress.com/2009/01/10 ...

  10. Docker开篇之基础概念篇

    What--什么是容器? 容器技术,是一种操作系统层的虚拟化(Operating system-level virtualization),它将应用软件系统打包成一个软件容器(Container),内 ...