Python SELENIUM上传文件或图片实现过程
作者:圆觉 发布时间:2021-12-22 09:11:53
标签:python,selenium,上传
逛网站的时候经常会遇到需要上传图片的操作,这里主要来说下selenium操作上传文件的操作。
前提条件:定位的元素必须是type 属性是file类型。即type="file",如下图:
详细用法:
参考代码:
from selenium import webdriver
import time
driver = webdriver.Chrome()
def test_open_page():
'''打开界面'''
driver.maximize_window()
driver.get('http://106.233.81.250/fw/index.php?ctl=user&act=login')
def test_register(user,password):
'''输入用户名密码'''
driver.find_element_by_css_selector('#login-email-address').send_keys(user)
driver.find_element_by_css_selector('#login-password').send_keys(password)
driver.find_element_by_xpath('//input[@type="submit"]').click()
driver.implicitly_wait(30)
driver.find_element_by_xpath('//input[@value="取消"]').click()
def test_money():
'''操作我要借款'''
#driver.find_element_by_link_text('我要借款').click()
el = driver.find_elements_by_css_selector('.pr20')
el[2].click()
ele = driver.find_elements_by_xpath('//div[@class="tc pt10"]/a/img')
ele[0].click()
def test_input_info():
'''输入借款信息'''
driver.find_element_by_css_selector('#borrowtitle').send_keys(2)
driver.find_element_by_css_selector('#borrowamount').send_keys(2000)
driver.find_element_by_css_selector('#repaytime').send_keys(20)
driver.find_element_by_css_selector('#apr').send_keys(20)
# todo js操作滚动条
js1 = "document.documentElement.scrollTop=1000"
driver.execute_script(js1)
time.sleep(1)
elem = driver.find_elements_by_xpath('//div[@style="width:710px;"]/input[@type="text"]')
elem[0].send_keys(2)
driver.find_element_by_xpath('//button[@rel="file_1"]').click()
time.sleep(1)
driver.find_element_by_xpath('//li[text()="本地上传"]').click()
time.sleep(1)
# todo 文件操作上传图片
driver.find_element_by_name('imgFile').send_keys(r'D:\file\1.png')
time.sleep(1)
driver.find_element_by_xpath('//input[@type="button" and @value="确定"]').click()
def test_closed():
time.sleep(6)
driver.quit()
test_open_page()
test_register('admin','admin')
test_money()
test_input_info()
test_closed()
来源:https://www.cnblogs.com/xiamaojjie/p/11624790.html


猜你喜欢
- 做一个总结,把自己这些年的从业经历和观感罗列一下,某些话可能触及到个人神经,但它们没有恶意。设计师喜欢把世界想象得很美好,社会很和谐,但是这
- 测试环境:1:xp系统2:双显,1680×1050 + 1050×16803:chrome 版本4.14:ff版本3.6chrome是我的默
- 利用这个小游戏可以学习一下ython3.3中tkinter的使用方法# -*- coding: utf-8 -*-import tkinte
- 使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢?在JDBC编程接口中Stateme
- 前言之前搭建了一个ExtJS + spring + Oracle 的这样一个报表系统的框架。 因为其他部门的要求, 也需要这个Framewo
- 多线程概述多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率。python提供了两个模块来实现多线程thr
- 最近,接手的项目里,提供的数据文件格式简直让人看不下去,使用pandas打不开
- 微信小程序之自定义底部弹出框动画,供大家参考,具体内容如下最近做小程序时,会经常用到各种弹框。直接做显示和隐藏虽然也能达到效果,但是体验性太
- SQL JOIN 连接SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。最常见的 JOIN 类型:SQL
- 本文实例为大家分享了TensorFlow实现创建分类器的具体代码,供大家参考,具体内容如下创建一个iris数据集的分类器。 加载样本数据集,
- 如何把imagenet预训练的模型,输入层的通道数随心所欲的修改,从而来适应自己的任务#增加一个通道w = layers[0].weight
- Function ChkInvaildWord(Words) Const InvaildWords=&quo
- 前言在8之前的版本中,对于全局变量的修改,其只会影响其内存值,而不会持久化到配置文件中。数据库重启,又会恢复成修改前的值。从8开始,可通过S
- 前言大家应该都有所体会,随着硬件层面的发展,linux系统多核已经是普通趋势,而mysql是单进程多线程,所以先天上对多进程的利用不是很高,
- 在PHP界谈模板引擎,必不可免的要拿Smarty开刀, 这个无比傻帽的却又带有一点点官方色彩的模板引擎, 如果没有我这样人富有正义感又富有创
- 上一讲完成了基本博客的配置和项目工程的生成。这次开始将博客一些基本的操作主要是数据库方面学习。1.设计博客数据库表结构博客最主要的功能就是展
- select CONVERT(varchar, getdate(), 120 ) 200
- 本文实例讲述了PHP实现的获取文件mimes类型工具类。分享给大家供大家参考,具体如下:<?php/* * Copyright 201
- import threadingfrom time import sleepdef test_func(id): &n
- 什么是SQL?SQL是一种用于操作数据库的语言。SQL是用于所有数据库的基本语言。不同数据库之间存在较小的语法更改,但基本的SQL语法基本保