51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2002|回复: 3
打印 上一主题 下一主题

python+se:添加页面上传图,网上方法是添加页面直接跳转为本地网页如何改为新增页?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-12-26 16:01:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyshyd 于 2016-12-26 16:12 编辑

python+selenium:在添加页面上传图片的时候,按照网上的办法本地上传文件,但是是在添加页面直接跳转为本地网页上传,如何改为添加一个新网页而不是在原有网页跳转呢?现在遇到的问题是我还要在添加页面多次上传几张图片然后点击提交按钮提交整个新增页面
贴上网上找的方法
上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。
其实,在selenium  webdriver 没我们想的那么复杂;只要定位上传按钮,通send_keys添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。下面通地例子演示。
第一步:新建一个txt文件,把下面的代码复制进去,然后重命名为upload_file.html文件,将此文件放置与python文件目录相同的地方
upload_file.html

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>upload_file</title>
<script type="text/javascript" async=""
src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
<script type="text/javascript">
</script>
</head>
<body>
<div class="row-fluid">
<div class="span6 well">
<h3>upload_file</h3>
<input type="file" name="file" />
</div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>



第二步写见.py文件:
upload.py


#coding=utf-8
from selenium import webdriver
import os,time

driver = webdriver.Firefox()

#脚本要与upload_file.html同一目录
file_path =  'file:///' + os.path.abspath('upload_file.html')
driver.get(file_path)

#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload_file.txt')
time.sleep(2)

driver.quit()





下面是切换两个窗口页面的办法,但是目前还用不上,得先解决同时打开两个网页页签的问题
#获得当前所有打开的窗口的句柄
all_handles=browser.window_handles




#进入注册窗口
for handle in all_handles:
    if handle !=sreach_windows:
        browser.switch_to_window(handle)
        print ('now register window!')




#回到搜索窗口        
for handle in all_handles:
    if handle==sreach_windows:
       browser.switch_to_window(handle)
       print('no sreach window!')
       browser.find_element_by_xpath(".//*[@id='giftForm']/div[8]/div/input").send_keys("30")  #成组数量
       #browser.find_element_by_xpath(".//*[@id='giftForm']/div[22]/button[2]").click()




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2016-12-26 16:59:22 | 只看该作者
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-17 09:35 , Processed in 0.062490 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表