相关疑难解决方法(0)

上传文档并显示文档状态 - Selenium WebDriver - Java

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

java selenium selenium-webdriver

23
推荐指数
1
解决办法
1032
查看次数

使用Selenium Server Standalone处理文件上载

我尝试使用的远程主机上执行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)

java selenium-server selenium-webdriver

12
推荐指数
2
解决办法
826
查看次数

如何在没有文本框的Selenium中上传文件

我一直在寻找在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

9
推荐指数
1
解决办法
8736
查看次数

通过命令行或本地脚本与浏览器JavaScript交互?

我们提供类似于imagemagick的浏览器页面JavaScript,可帮助人们将图像转换为不同的大小和格式。但是,它需要网页交互。

是否可以让人们自动进行这种交互-无需将图像发送到我们的服务器(从而增加了带宽成本和服务器负载),并且不需要用户下载无头的浏览器库(如Puppeteer)?

例如,以下流程是否可能:

  1. 通过命令行(或本地脚本)打开Chrome到特定网页。
  2. 将图像上传到该网页。
  3. 在网页上调用脚本。
  4. 接收脚本结果并允许本地操作。

可以启动Chrome,但尚不清楚启动后是否可以与特定的浏览器窗口进行交互。

javascript firefox google-chrome offline-mode browser-automation

5
推荐指数
1
解决办法
266
查看次数

如何使用RSelenium上传文件?

我正在尝试了解如何使用 R/RSelenium 上传文件。信息:

  • 操作系统:Win 8.1、RSelenium_1.7.1,带有 docker 映像(linux、standalone-chrome 3.2.0)。

我尝试了这个问题的最高评论:

如何在 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 …

selenium file-upload r rselenium

4
推荐指数
1
解决办法
1516
查看次数

使用量角器和selenium将文件上传到隐藏输入

我有一个隐藏的文件输入字段,如下所示:

<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 protractor

3
推荐指数
1
解决办法
5504
查看次数