当前位置: 首页 > 面试题库 >

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

宦树
2023-03-14
问题内容

我可以使用Selenium将文件上传到远程服务器,但是即使文件被上传,文件选择器对话框仍然存在。Selenium常见问题解答指出:
“您无法直接与本机OS文件浏览器对话框进行交互,但是我们做了一些魔术操作,以便…。”考虑到此处使用的是“魔术”,因此我得到的行为并不奇怪。边缘有些粗糙。但是似乎有解决方法。我有以下代码:

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(),然后单击“转到”(经过测试,对我有用):

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()


 类似资料:
  • 在浏览器中打开一个文件选择器,以便选择文件、目录或数据。 调用: web3.bzz.pick.file() web3.bzz.pick.directory() web3.bzz.pick.data() 参数: 无 返回值: 一个Promise对象,其解析值为一个或多个文件。 示例代码: web3.bzz.pick.file() .then(console.log); > { ... }

  • 问题内容: 我正在尝试使用Java为网站编写selenium测试。但是,在测试文件上传时遇到了一个问题。 当我单击文件上传按钮时,它将自动打开Windows文件上传。我有代码可以将文本成功地上传到上传框中,只是我无能为力,无法阻止Windows框自动显示,并且网站不自动打开Windows文件上传也不是真正的选择。通过研究这个主题,我了解到seleniumWebdriver无法解决这个问题。所以我的

  • 如何使用selenium webdriver通过窗口提示从本地上传文件? 我想执行以下操作: 点击窗口上的“浏览”选项 从窗口提示符转到保存文件的本地特定位置 选择文件,然后单击“打开”以上传文件。

  • 问题内容: 我们正在创建一个使用Web视图的应用程序,它将访问用户需要上传文件的页面。我们遇到了Android 4.4的问题,其中文件选择器没有打开,并且单击“上载”按钮没有任何反应。此功能可使用openFileChooser方法与早期版本一起使用,如下所示: 我花了大量时间寻找在4.4上实现此目标的方法,但是没有运气。有没有人设法做到这一点? 问题答案: WebView正常工作 如果我正确理解以