设定
我正在使用Python 3.x和Selenium在网上商店的后端工作。
我需要从计算机的平台后端上载产品图像。
问题
使用Selenium可以单击“图像上载”按钮,但是单击会弹出MacOS文件选择器。
Selenium在MacOS文件选择器上不起作用。我搜索了如何解决此问题,并找到了以下答案,
但是,这些都不起作用。
按钮周围的html是
<td class="control">
<div class="hide-input">
<input data-val="true" data-val-required="The Image field is required." id="FileName" name="FileName" type="text" value="File636578585362423712.png">
</div>
<div id="uploadifive-FileNameUpload" class="uploadifive-button" style="height: 18px; line-height: 18px; overflow: hidden; position: relative; text-align: center; width: 50px;">Upload<input id="FileNameUpload" type="file" name="FileNameUpload" data-editor="#FileName" data-url="http://also-inc.demohoster.com/upload/uploadfile" data-path="~/UserFiles/Products/Images/" data-maxsize="10240" data-extensions="*.jpg;*.jpeg;*.png;*.gif;*.bmp;" data-thumbnailwidth="128" data-thumbnailheight="128" data-thumbnailpath="/UserFiles/Products/Images/Preview/" data-uniquename="True" data-preview="/UserFiles/Products/Images/Preview/File636578585362423712.png" data-isnew="false" data-auth="2CDE59B99D5F034087CA006254189C31F4388BA02DDE1CD1752A2FCFDE6EB556406CAF9D82DE4E02AC4D7D9813E2CF8B2A1413EF7CE8CA22FDD9822130B4EC239F1BD305F8AA1E5F6E9EFD1CD64138B8A621A88A675A3A528B7DF2F0388C36C473CBAD080CF826A28A3464FB719D039690241E38" data-session="jx134u0kcaxfu4jz1darurvg" class="file-uploader hide-input" style="display: none;"><input type="file" style="font-size: 18px; opacity: 0; position: absolute; right: -3px; top: -3px; z-index: 999;"></div>
<div id="uploadifive-FileNameUpload-queue" class="uploadifive-queue"></div>
</td>
尝试
我尝试单击按钮,然后发送密钥,
browser.find_element_by_id('uploadifive-FileNameUpload').click()
browser.find_element_by_id('uploadifive-FileNameUpload').send_keys('path/to/MyImage.jpeg')
(也在所有可能的组合中尝试使用id'uploadifive-FileNameUpload-queue'
和id 'FileName'
)
而且我尝试不单击即发送即发browser.find_element_by_id('uploadifive- FileNameUpload').send_keys('path/to/MyImage.jpeg')
。再次为所有键。
无论我尝试什么,我都会不断收到ElementNotInteractableException
。
这是我第一次尝试以这种方式上传图片,但遇到了麻烦。
我该如何解决?
禁用文件选择器并调用sendKeys
,<input type="file">
这是设计允许的唯一一种元素来接收/保存文件:
# disable the OS file picker
browser.execute_script("""
document.addEventListener('click', function(evt) {
if (evt.target.type === 'file')
evt.preventDefault();
}, true)
""")
# make an <input type="file"> available
browser.find_element_by_id('uploadifive-FileNameUpload')\
.click()
# assign the file to the <input type="file">
browser.find_element_by_css_selector('input[type=file]')\
.send_keys('path/to/MyImage.jpeg')
问题内容: 有什么办法可以使它工作? [错误] selenium.common.exceptions.InvalidArgumentException:消息:未找到文件:https : //ercess.com//images//events//-Blockchain-2019-36613-banner.png 问题答案: 您首先需要将图像下载到计算机上,然后将其上传… 您可以使用: 然后发送:
问题内容: 我将Selenium WebDriver与java.awt.Robot结合使用,以更好地模拟用户与Web应用程序的交互。是的,我知道可能没有必要,但是我所服务的客户都需要它。 当前,一切运行良好,但是我有一个小问题,就是我似乎找不到找到将Web元素显示在屏幕上位置的好方法。诸如标题栏,菜单栏,导航栏之类的东西都将内容向下推到物理屏幕上(Robot从中获取坐标),但对Selenium报告
问题内容: 我正在尝试使用Java为网站编写selenium测试。但是,在测试文件上传时遇到了一个问题。 当我单击文件上传按钮时,它将自动打开Windows文件上传。我有代码可以将文本成功地上传到上传框中,只是我无能为力,无法阻止Windows框自动显示,并且网站不自动打开Windows文件上传也不是真正的选择。通过研究这个主题,我了解到seleniumWebdriver无法解决这个问题。所以我的
问题内容: 我遇到的一种情况是,单击链接网页会打开一个弹出窗口。并且在弹出窗口打开之后,焦点位于弹出窗口中,并且主窗口被禁用。而且我无法将控件转移到弹出窗口。请看下面的代码。 我无法将控件从父窗口转移到弹出窗口。我知道以下命令。 但是它没有太大帮助。请帮我。 问题答案: 当我需要使用以下弹出窗口,关闭它并返回主窗口时,这是我使用的代码。当然,出于此答案的目的已对其进行了简化。它维护原始窗口(主窗口
我在我公司的网站上有一个非传统的图像上传按钮。我想有一个自动的方式来上传使用此按钮的图像,但不必使用像AutoIt这样的工具,以便与文件资源管理器进行交互。 以下是此按钮的HTML示例: 它与通常的元素有点不同,例如
问题内容: 我无法通过ajax上传多个文件。这是我的代码。 HTML代码: Ajax代码:- 当我通过Ajax调用upload_business_photo_do()函数时,它无法获取图像$ _FILES [‘file’] [‘name’]的名称 问题答案: 尝试这样使用,它简单又容易 并在控制器中使用像这样 并使用此功能将文件数据转换为多个图像数据的数组 它的工作完美,只需尝试使用它。您无需使用
我正在尝试拍摄一个在C#中的Selenium WebDriver中执行的测试的屏幕截图。我正在使用Gallio运行我的测试。下面是我的截图代码: 我在测试中使用下面的代码来截屏: 问题是在执行时,语句打开一个新的chrome窗口,然后弹出一个错误。我的目的是把一个已有的行书截图。我应该做哪些改变来实现这一点? 附言-有没有一种方法可以在执行测试时拍摄屏幕截图而不初始化新的驱动程序?