Python 使用Selenium和ng文件上载自动化文件上载
我有一个项目,我通过上传照片,我需要用Python中的selenium webdriver自动化上传过程 我的HTML元素如下所示:Python 使用Selenium和ng文件上载自动化文件上载,python,angularjs,selenium,automation,ng-file-upload,Python,Angularjs,Selenium,Automation,Ng File Upload,我有一个项目,我通过上传照片,我需要用Python中的selenium webdriver自动化上传过程 我的HTML元素如下所示: <element ngf-pattern="image/*" accept="image/*" ngf-max-size="10MB" ngf-max-height="1000" ngf-select="addPhoto($index, $file)"> ...</element> ... 在手动上传元素时,上
<element
ngf-pattern="image/*" accept="image/*"
ngf-max-size="10MB" ngf-max-height="1000" ngf-select="addPhoto($index, $file)">
...</element>
...
在手动上传元素时,上传元素肯定有效。但我找不到在Python中使用Selenium实现自动化的方法。我曾尝试查找元素,然后发送图像绝对路径的键,但这只是将绝对路径放在浏览器的搜索字段中(就像我在Mac上键入“Command+F”)
请注意,没有
<input type="file"/>
使用这种上传文件的方法
您知道如何使用Selenium在Python中实现这一点吗?谢谢 必须有一个隐藏的文件输入,它隐式地负责文件上传。例如,将其隐藏在页面底部
以下是一个工作示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://angular-file-upload.appspot.com/")
# wait for the upload box to be visible
wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[ngf-select]")))
# get a model
model = element.get_attribute("ng-model")
# find a file input by model
file_input = driver.find_element_by_css_selector('input[ngf-select][ng-model="%s"]' % model)
# upload an image
file_input.send_keys("/absolute/path/to/dr-evil-and-minion-laughing.png")
结果分为:
没错,它们位于页面底部,但它们是隐藏的,因此我无法向它们发送密钥,您知道我将如何访问它们吗?我一直在研究,它说我必须执行Javascript来设置css以使其可见,但我的文件输入是可重复的,因此我不知道如何访问单个元素并使其可见。@northsideknight你说得对,使它们可见-例如,请参阅。如果有多个隐藏元素,请找到所有元素并使它们逐个可见。