我可以使用 Selenium 将文件上传到远程服务器,但即使文件上传后,文件选择器对话框仍然存在。Selenium 常见问题解答指出,“您无法直接与本机操作系统文件浏览器对话框交互,但我们做了一些魔法,以便......”考虑到此处使用“魔法”,我得到的行为有点粗糙也就不足为奇了边缘。但似乎有解决方法。从我那里得到线索这个答案我有以下代码:
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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)