微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Selenium文件上传使文件选择器窗口打开(OS / X和Python)

我可以使用Selenium将文件上传到远程服务器,但即使上传文件,文件选择器对话框也会存在. The Selenium FAQ notes that,“你不能直接与原生操作系统文件浏览器对话框进行交互,但是我们做了一些魔术……”鉴于在这里使用“魔法”,我得到的行为有点粗糙并不奇怪边缘.但似乎有解决方法.从this answer开始,我有以下代码

import contextlib, time
from selenium import webdriver
import selenium.webdriver.common.action_chains as action_chains
with contextlib.closing(webdriver.Chrome()) as driver:
    driver.get("http://www.bing.com/images")
    driver.find_element_by_id("sbi_t").click()
    driver.find_element_by_id("sbi_file").click()
    driver.find_element_by_id("sbi_file_upload").send_keys("//Loch ness Monster.jpg")
    print driver.current_url # Still `http://www.bing.com/images` :(
    file_upload = driver.find_element_by_id("sbi_file_upload")
    action_chains.ActionChains(driver).click(file_upload).perform() # https://stackoverflow.com/a/16864547/2829764

但在此结束时,文件上传窗口仍然存在.我怀疑我需要一个稍微不同的解决方法,因为我在Mac上.有人可以帮忙吗?

解决方法:

根本不要点击上传按钮.

通过send_keys()设置文件名,然后单击“Go”(测试并适用于我):

element = driver.find_element_by_id("sbi_file_upload")
element.send_keys('/Path/to/file.jpeg')
driver.find_element_by_css_selector('div#sbi_sb_ipt span[name=go]').click()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐