lovefei1027 发表于 2016-9-1 16:19:29

selinium python 点击页面弹出一个dialog窗口,如何在弹出窗口选择文件?

点击网页中的“扫描”按钮后,弹出的选择文件的页面,选择相应的文件后直接就做处理了,试了很多种方法无法选择文件(文件位置是可以改变的,可以根据路径来选择),咨询一下:有什么方法能够选择文件


qmqq0000 发表于 2016-9-1 17:07:22

文件名里直接输入路径就可以定位到文件!模拟键盘操作,打开后直接输入路径字符串然后发送回车!

掉渣饼 发表于 2016-9-1 21:12:15

你可以试试下面的方法
1、首先在文件头要有import os
2、找到扫描元素的ID或者其他属性值,然后上传
例如
driver.find_element_by_id("扫描元素的ID").send_keys('文件绝对路径,例如:D:\\XXX文件')

若尘_51 发表于 2016-9-2 09:01:50

这是Windows窗口,单纯的selenium是定位不了的,只能引入其他库,网上有一种方法是引入:win32gui,win32con,win32api
这是在网上搜的例子,你自个琢磨下,跟你的那个需求挺像的:

#!/usr/bin/python
#coding=utf-8
import win32gui
import win32con
import win32api

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3)
#定位到要右击的元素
q=driver.find_element_by_xpath(".//*[@id='u1']/a")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(q).perform()
q.send_keys("K")
time.sleep(3) #休眠3秒'''

#获取位置
a = u'#32770'
pwin =win32gui.FindWindow(a,None)
pwin1=win32gui.FindWindowEx(pwin,None,'DUIViewWndClassName',None)
pwin2=win32gui.FindWindowEx(pwin1,None,'DirectUIHWND',None)
pwin3=win32gui.FindWindowEx(pwin2,None,'FloatNotifySink',None)
pwin4=win32gui.FindWindowEx(pwin3,None,'ComboBox',None)
pwin5=win32gui.FindWindowEx(pwin4,None,'Edit',None)
win32gui.SendMessage(pwin5, win32con.WM_SETTEXT, None, 'Test')
time.sleep(1)

#定位到保存按钮
b = u"保存(&S)"
save_button = win32gui.FindWindowEx(pwin, None,'Button',b)

win32gui.SetForegroundWindow(save_button)
#按键盘Down键,操作“保存”按钮,激活
time.sleep(1)
win32api.keybd_event(40,0,0,0)
win32api.keybd_event(40,0,win32con.KEYEVENTF_KEYUP,0)
time.sleep(1)
#按键盘ENTER键
win32api.keybd_event(13,0,0,0)
win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)

lovefei1027 发表于 2016-9-3 10:19:50

若尘_51 发表于 2016-9-2 09:01
这是Windows窗口,单纯的selenium是定位不了的,只能引入其他库,网上有一种方法是引入:win32gui,win32co ...

通过测试这种方法完全可以实现对弹出窗口的各种处理,谢谢
页: [1]
查看完整版本: selinium python 点击页面弹出一个dialog窗口,如何在弹出窗口选择文件?