@Florent B.回答我的问题在问候上传一个文档,其中的元素不是一个输入类型="文件" 在这里
现在,我有另一个文档上传部分,我无法正确处理.屏幕上有一个带有输入类型="提交"按钮的覆盖图,所以我使用上面超链接的解决方案,它确实上传了文档,但是,它没有改变显示文件被上传的状态,这是必需的实际完成订单.
这是我当前获取文档的代码,它只是没有在对话框中反映出来:
// disable the click event on an `<input>` file
((JavascriptExecutor)getDriver()).executeScript(
"HTMLInputElement.prototype.click = function() { " +
" if(this.type !== 'file') HTMLElement.prototype.click.call(this); " +
"}; " );
// trigger the upload
VOrderDetails.uploadReport_btn(getDriver()).click();
// change the visibility of the file input control
WebElement elem = getDriver().findElement(By.id("UploadLib_Uploader_js"));
String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";
((JavascriptExecutor) getDriver()).executeScript(js, elem);
Thread.sleep(1000);
getDriver().findElement(By.cssSelector("input[type=file]"))
.sendKeys(filePath);
Run Code Online (Sandbox Code Playgroud)
手动上载文档时,文档显示如下,显示上载了测试PDF.pdf文件并允许您完成订单:
有没有办法"伪造"它以显示已在此叠加层上载的文件?
这是这篇文章的HTML:
<div id="divSetComplete" style="width: 594px; display: block; top: 316.5px;" class="MessageBox HideOldProgressBar">
<div class="DialogTitle">Complete assignment</div>
<div id="divSetCompleteFields" class="DialogSection dsBorder …
Run Code Online (Sandbox Code Playgroud) 我尝试使用的远程主机上执行testsuite Selenium Standalone Server
.它应该上传一个文件.我使用下面的代码来处理文件上传:
FileBrowserDialogHandler fileBrowserDialogHandler = new FileBrowserDialogHandler();
fileBrowserDialogHandler.fileUploadDialog(fileSource);
Run Code Online (Sandbox Code Playgroud)
当我远程执行它时它不起作用,因为它无法打开文件选择器窗口.输入字段在网页上如下所示:
<input type ="text"id ="file-path">
我用当前的解决方案替换了当前的解决方案,WebElement
以避免图形窗口,但它不起作用.
WebElement fileInput = driver.findElement(By.id("filepathelement"));
fileInput.sendKeys(filepath);
Run Code Online (Sandbox Code Playgroud)
输入类型不是文件,因此下面的代码不起作用:
driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");
Run Code Online (Sandbox Code Playgroud) 我一直在寻找在Selenium 2中上传文件的解决方案.
问题是我尝试上传的网页元素有两种使用方式:拖放或点击按钮.没有字段输入框.并不是说我没有尝试使用sendKeys.我已经在按钮和所有周围元素上尝试过了.
这个问题的第二部分是我在Windows机器上编写,但自动化发生在Linux机器上.这意味着AutoIt不起作用.这是上传框的HTML.
<div class="up-target" id="up-drop-zone">
<div class="up-drop-zone-pre hidden">
<p>Please choose a folder to upload</p>
</div>
<div class="up-drop-zone-decor">
<p>Drop one or more files here</p>
<p>or</p>
<button name="uploadFile" class="upload">Select Files</button>
<input type="file" id="up-drop-zone-input" name="files[]" multiple="true">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在使用Java,并对Selenium之外的其他方法开放(但是,我只选择了maven存储库).
谢谢!
java selenium automated-tests file-upload selenium-webdriver
我们提供类似于imagemagick的浏览器页面JavaScript,可帮助人们将图像转换为不同的大小和格式。但是,它需要网页交互。
是否可以让人们自动进行这种交互-无需将图像发送到我们的服务器(从而增加了带宽成本和服务器负载),并且不需要用户下载无头的浏览器库(如Puppeteer)?
例如,以下流程是否可能:
可以启动Chrome,但尚不清楚启动后是否可以与特定的浏览器窗口进行交互。
javascript firefox google-chrome offline-mode browser-automation
我正在尝试了解如何使用 R/RSelenium 上传文件。信息:
我尝试了这个问题的最高评论:
如何在 Java 中使用 Selenium WebDriver 上传文件
例子:
url <- "https://www.freepdfconvert.com/pdf-word"
path <- "C:/path_to_folder/filename.pdf"
remDr$navigate(url)
upload_btn <- remDr$findElement(using = "id", "clientUpload")
upload_btn$sendKeysToElement(path)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误消息:
Selenium message:java.lang.String cannot be cast to java.util.List
Error: Summary: UnknownError
Detail: An unknown server-side error occurred while processing the command.
class: java.lang.ClassCastException
Further Details: run errorDetails method
Run Code Online (Sandbox Code Playgroud)
使用的文件夹映射到虚拟机。Autoit是不可能的,因为它只适用于 Windows。
还尝试了upload_btn$sendKeysToElement(list(path))
不返回错误的方法,但它也不起作用。
任何帮助表示赞赏。
编辑:
我认为这应该有效,但在查看屏幕截图时看到错误:
default
作为共享文件夹挂载到虚拟机并命名win_share
default
创建了一个文件夹sudo mkdir vm_share
win_share …
我有一个隐藏的文件输入字段,如下所示:
<input type="file" id="fileToUpload-1827" multiple="" onchange="angular.element(this).scope().setFiles(this)" data-upload-id="1827" class="hidden-uploader">
Run Code Online (Sandbox Code Playgroud)
我希望能够将文件上传到此.在量角器中执行此操作的常规方法是:
ptor.findElement(protractor.By.css('.file-upload-form input')).sendKeys('/path/to/file')
Run Code Online (Sandbox Code Playgroud)
但由于输入元素不可见,我收到错误.
我试过了:
ptor.driver.executeScript("return $('.file-upload-form input')[0].removeClass('hidden-uploader');").then(function () {
ptor.findElement(protractor.By.css('.file-upload-form input')).sendKeys('hello');
})
Run Code Online (Sandbox Code Playgroud)
但得到了错误
UnknownError: $(...)[0].removeClass is not a function
Run Code Online (Sandbox Code Playgroud)
使用executeScript
一个元素可见以便我可以上传文件似乎很荒谬,有更好的方法吗?如果没有,我该如何取消隐藏元素?
输入表单的完整html是:
<form class="file-upload-form ng-scope ng-pristine ng-valid" ng-if="ajaxUploadSupported">
<strong>Drag files here to upload</strong> or
<label for="fileToUpload-1953">
<div class="btn btn-info select-file-btn">
Click to Select
</div>
</label>
<div>
<input type="file" id="fileToUpload-1953" multiple="" onchange="angular.element(this).scope().setFiles(this)" data-upload-id="1953" class="hidden-uploader">
</div>
</form>
Run Code Online (Sandbox Code Playgroud) selenium ×4
java ×3
file-upload ×2
firefox ×1
javascript ×1
offline-mode ×1
protractor ×1
r ×1
rselenium ×1