Selenium(Python)调用pywin32上传图片
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上传图片的更多相关文章
- Selenium+Python:下载文件(Firefox 和 Chrome)
引自 https://blog.csdn.net/Momorrine/article/details/79794146 1. 环境 操作系统 Win10 IDE Eclipse (Oxyg ...
- selenium+python自动化77-autoit文件上传
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- selenium+python自动化77-autoit文件上传【转载】
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- selenium + python自动化测试环境搭建
selenium的在python平台的搭建: 搭建平台windows 准备工具如下: --------------------------------------------------------- ...
- <译>Selenium Python Bindings 5 - Waits
如今,大多数的Web应用程序使用AJAX技术.当页面加载到浏览器,页面中的元素也许在不同的时间间隔内加载.这使得元素很难定位,如果在DOM中的元素没有呈现,它将抛出ElementNotVisibleE ...
- <译>Selenium Python Bindings 2 - Getting Started
Simple Usage如果你已经安装了Selenium Python,你可以通过Python这样使用: #coding=gbk ''' Created on 2014年5月6日 @author: u ...
- [译]Selenium Python文档:二、初步开始
2.1.简单使用 如果已经安装好了Selenium Python,你就可以像下面这样编写Python代码来使用它了: from selenium import webdriver from selen ...
- [译]Selenium Python文档:五、Waits等待
大多数现代web应用都使用了AJAX技术.当浏览器加载一个页面的时候,该页面内的元素可能在不用的时间间隔内进行加载.这使得元素定位变得比较困难:如果一个元素还没有出现在DOM中,定位函数将会抛出一个E ...
- Python调用C# Com dll组件实战
之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael类,而非AES的四种模式(ECB.CBC.CFB.OFB,这四种用的是RijndaelManaged类),Python下Crypt ...
随机推荐
- 【转】Java中关于WeakReference和WeakHashMap的理解
新美大的10月11日的笔试中有一道选择题,让选择函数返回结果,代码如下: private static String test(){ String a = new String("a&quo ...
- HDU 2048 神、上帝以及老天爷(错排概率问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2048 神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others) ...
- openmax component类的继承关系
向OpenCORE里继承一个新的codec时,需要用到OpenMAX接口规范对该codec进行封装,即要定义一个用于封装的类(wrapper),实现OpenMAX规定的集中核心方法(omx core ...
- 查询sqlserver 表结构呀
SQL Server里查询表结构命令 对于SQL Server数据库有两种方法查询表结构 第一种方法 sp_help Accounts_Users 其中Accounts_Users 表示表名 ...
- 【转载】决策树Decision Tree学习
本文转自:http://www.cnblogs.com/v-July-v/archive/2012/05/17/2539023.html 最近在研究规则引擎,需要学习决策树.决策表等算法.发现篇好文对 ...
- ubuntu上建立本地git 和 网络 github的上传与下载
github工具是一个很好用的工具,可以在本地建立一个git仓库,存储当前写的程序或者数据,然后通过ssh与github建立联系.具体怎么实现,下面进行介绍. 1.首先要安装git 软件 在Linux ...
- 原生js实现简单的随机点名系统
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- .Net core 使用Jenkins + Docker + Azure Devops 傻瓜式部署
这几天一直在搞 Jenkins + Docker + Azure Devops 部署,因为这种方式部署真的非常的省心,而且速度快,方便快捷,等等无数优点,感谢我的单身领导的支持,当然也感谢 晓晨大神, ...
- mysql小特性:change buffer
change buffer是在其他数据库中没有的一个概念,说白了就是一块系统表空间分配的空间,针对的对象是辅助索引的叶子节点(为什么不是主键索引?因为主键索引是聚集索引,在磁盘上的排列是有序的,磁盘的 ...
- 利用binlog2sql闪回丢失数据
today,i'll using the open source tool named "binlog2sql" which is release by danfengch ...