Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在标签标签下查找输入文件类型元素_Java_Selenium - Fatal编程技术网

Java 如何在标签标签下查找输入文件类型元素

Java 如何在标签标签下查找输入文件类型元素,java,selenium,Java,Selenium,找不到以下HTML代码的输入元素 我的代码: WebDriverWait wait1 = new WebDriverWait(utils.driver, 30); wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']"))); element = driver.findElement(By.cssSelector("input[type='file']")); Up

找不到以下HTML代码的输入元素

我的代码:

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
element = driver.findElement(By.cssSelector("input[type='file']"));
UploadFile().sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");
java.lang.NullPointerException
at pageObjects.ProofPage.UploadFile(ProofPage.java:25)
获取异常:

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
element = driver.findElement(By.cssSelector("input[type='file']"));
UploadFile().sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");
java.lang.NullPointerException
at pageObjects.ProofPage.UploadFile(ProofPage.java:25)
HTML代码摘录:

<form name="proofCtrl.frmProof" ng-submit="proofCtrl.submitProof( $event )" class="ng-pristine ng-valid">
    <div layout-margin="" class="layout-margin">
        <div class="column">
            <fp-s3-upload user-obj="proofCtrl.userObj" hide-upload-button="true" file-types="jpg,jpeg,png,bmp,gif,pdf,doc,docx,rtf" max-size-in-bytes="12000000" do-upload-all="proofCtrl.doUpload" on-get-url="proofCtrl.getUrl( fileObj )" on-preview-click="proofCtrl.showPreview( imgObj )" on-upload-error="proofCtrl.uploadError( error )" on-upload-warning="proofCtrl.uploadWarning( warning )" on-upload-all-start="proofCtrl.uploadAllStart()" on-upload-all-complete="proofCtrl.uploadAllComplete()" on-add-file="proofCtrl.onAddFile()" on-add-all="proofCtrl.addAll( filesObj, queueCount )" on-remove-file="proofCtrl.removeFile( filesObj, queueCount )" on-add-file-fail="proofCtrl.addFileFail( fileObj, filterObj )" on-item-upload-success="proofCtrl.itemUploadSuccess( fileObj )" class="ng-isolate-scope">
                <div class="fp-s3-upload-container layout-xs-column layout-sm-column layout-gt-sm-row layout-align-xs-stretch-stretch layout-align-sm-stretch-stretch layout-align-gt-sm-stretch-stretch flex-xs-grow flex-sm-grow flex-gt-sm-grow" flex-gt-sm="grow" layout-gt-sm="row" layout-align-gt-sm="stretch stretch" flex-sm="grow" layout-sm="column" layout-align-sm="stretch stretch" flex-xs="grow" layout-xs="column" layout-align-xs="stretch stretch">
                    <div class="fp-s3-upload-target layout-xs-row layout-sm-row layout-gt-sm-column layout-align-xs-stretch-stretch layout-align-sm-stretch-stretch layout-align-gt-sm-stretch-stretch flex-xs-grow flex-sm-grow flex-gt-sm-30" flex-gt-sm="30" layout-gt-sm="column" layout-align-gt-sm="stretch stretch" flex-sm="grow" layout-sm="row" layout-align-sm="stretch stretch" flex-xs="grow" layout-xs="row" layout-align-xs="stretch stretch">
                        <!-- <div ng-show="fpS3UploadCtrl.uploader.queue.length" class="ui red circular label floating ng-hide" ng-cloak>{{ fpS3UploadCtrl.uploader.queue.length }}</div> -->
                        <label ng-attr-for="{{ fpS3UploadCtrl.id }}" nv-file-drop="" nv-file-over="" uploader="fpS3UploadCtrl.uploader" over-class="drag-over" flex="grow" layout="row" layout-fill="" class="layout-fill layout-row flex-grow" for="fpop-14fa8c17018d">
                            <input nv-file-select="" uploader="fpS3UploadCtrl.uploader" ng-attr-id="{{ fpS3UploadCtrl.id }}" multiple="" id="fpop-14fa8c17018d" type="file">
                        </label>
                    </div>
                </div>
            </fp-s3-upload>
        </div>
    </div>
</form>

ExpectedConditions.visibilityOfElementLocated
返回一个WebElement,所以您可以直接在其上调用
.sendKeys

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']"))).sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");

ExpectedConditions.visibilityOfElementLocated
返回一个WebElement,所以您可以直接在其上调用
.sendKeys

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']"))).sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");

您得到的是
NullPointerException
,因为
UploadFile()
中出现了问题。我不知道是什么,因为你没有发布与之相关的代码。根据您提供的代码,我不确定您为什么需要它

下面的代码应该可以工作

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']"))).sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");

您等待所需元素的可见性,然后将
.sendKeys()
发送到该元素。

您将获得
NullPointerException
,因为
UploadFile()
中出现问题。我不知道是什么,因为你没有发布与之相关的代码。根据您提供的代码,我不确定您为什么需要它

下面的代码应该可以工作

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']"))).sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");

您等待所需元素的可见性,然后将
.sendKeys()
添加到该元素。

尝试使用以下代码:

WebDriverWait wait1 = new WebDriverWait(driver, [TimeOutInSeconds]);
driver.findElement(By.xpath("//input[@type='file']")).sendKeys([FileNameWithPath]);
wait1.until(ExpectedConditions.invisibilityOfElementLocated([ProgressBarLocator]));
在哪里

  • timeoutingseconds->上传文件的最大超时时间
  • FileNameWithPath=“C:\\Users\\..\\Desktop\\TestImage.png”
  • ProgressBarLocator->Locator元素指示继续上载

尝试使用更长的超时时间,而不是仅30秒。它不会影响上传,因为上传指示器一不可见,它就会返回成功。

尝试使用以下代码:

WebDriverWait wait1 = new WebDriverWait(driver, [TimeOutInSeconds]);
driver.findElement(By.xpath("//input[@type='file']")).sendKeys([FileNameWithPath]);
wait1.until(ExpectedConditions.invisibilityOfElementLocated([ProgressBarLocator]));
在哪里

  • timeoutingseconds->上传文件的最大超时时间
  • FileNameWithPath=“C:\\Users\\..\\Desktop\\TestImage.png”
  • ProgressBarLocator->Locator元素指示继续上载

尝试使用更长的超时时间,而不是仅30秒。它不会影响上传,因为上传指示器一旦不可见,它就会返回成功。

根据您共享的代码,一个
空点异常几乎出现在卡片上,因为-

当您这样做时:

wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
返回
WebElement
。因此首先,我们不需要使用
element=driver.findelelement(By.cssSelector(“input[type='file']”)搜索同一个元素更多。因此,我们可以有效地做到:

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
WebElement element = wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
现在,一旦返回了预期的
,我们只需在同一
不通过任何其他方法,例如
上传文件()
)上调用
方法,如下所示:

element.sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");
因此,要消除NullPointerException,您的代码将是:

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
WebElement element = wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
element.sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");

根据您共享的代码,NullPointerException
基本上已经存在,因为-

当您这样做时:

wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
返回
WebElement
。因此首先,我们不需要使用
element=driver.findelelement(By.cssSelector(“input[type='file']”)搜索同一个元素更多。因此,我们可以有效地做到:

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
WebElement element = wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
现在,一旦返回了预期的
,我们只需在同一
不通过任何其他方法,例如
上传文件()
)上调用
方法,如下所示:

element.sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");
因此,要消除NullPointerException,您的代码将是:

WebDriverWait wait1 = new WebDriverWait(utils.driver, 30);
WebElement element = wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='file']")));
element.sendKeys("C:\\Users\\....\\Desktop\\TestImage.png");

大家好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是命名和的部分。更重要的是,请阅读。你可能也想了解一下。我的回答有用吗?如果是,请在我的答案旁边打勾。您好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是命名和的部分。更重要的是,请阅读。你可能也想了解一下。我的回答有用吗?如果是--请在我的答案附近打勾。现在获取下面的错误:org.openqa.selenium.TimeoutException:预期条件失败:等待by.cssSelector定位的元素的可见性:输入[type='file'](每隔500毫秒尝试30秒)使用此代码,我能够成功上载我的文件。谢谢你们,我在这个问题上纠缠了两天多。我使用了driver.findElement(By.xpath(//input[contains(@id,'fpop-')))).sendKeys(“C:\\Users\\…\\Desktop\\TestImage.png”);它的工作原理类似于charm:)现在获得以下错误:org.openqa.selenium.TimeoutException:预期条件失败:等待by.cssSelector定位的元素的可见性:input[type='file'](尝试30秒,间隔500毫秒)使用此代码,我能够成功上载我的文件。谢谢你们,我在这个问题上纠缠了两天多。我使用了driver.findElement(By.xpath(//input[contains(@id,'fpop-')))).sendKeys(“C:\\Users\\…\\Desktop\\TestImage.png”);它的作用就像魅力:)