51Testing软件测试论坛

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

作者: yyshyd    时间: 2016-12-26 16:01
标题: python+se:添加页面上传图,网上方法是添加页面直接跳转为本地网页如何改为新增页?
本帖最后由 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()





作者: 若尘_51    时间: 2016-12-26 16:34
支持一下。
作者: yyshyd    时间: 2016-12-26 16:59
若尘_51 发表于 2016-12-26 16:34
支持一下。

3Q
作者: 梦想家    时间: 2016-12-26 17:07
支持一下




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2