我正在使用selenium webdriver和无头浏览器来运行我的脚本。我正在尝试上传该文件,因为该元素需要使用在html源页面中是不可见的。我尝试使用javascript使其可见,我可以使其可见并上传文件,但它正在正常的火狐浏览器上工作。但是当我在无头浏览器上执行相同的脚本时,下面的工作原理是我正在使用的html源代码和代码。
<input id="CASE_file_select" class="required" type="file" multiple="" size="25" name="CASE_file" style="display: none;"/>
我正在使用的代码
JavascriptExecutor executor = (JavascriptExecutor)oDriver;
executor.executeScript("document.getElementById('CASE_file_select').style.display='block';");
oGeneric.sleepTimer(5);
Utility.constant.objLogs.writeLog("After executing java script");
WebElement ofilepathxpath = oDriver.findElement(By.xpath("//input[@id='CASE_file_select']"));
oGeneric.sleepTimer(5);
Utility.constant.objLogs.writeLog("After finding xpath of Invisibleelement");
Utility.constant.objLogs.writeLog("After finding xpath of file");
try {
ofilepathxpath.sendKeys(sfilepath);
oGeneric.sleepTimer(8);
}catch (Exception e){
Utility.constant.objLogs.writeLog("Failed to choose file");
}
Utility.constant.objLogs.writeLog("After choosing file");
我不确定javascript执行器是否在无头浏览器上工作我必须在无头浏览器上执行我的所有脚本它是项目的要求。请让我知道解决方案。
以下是脚本失败的上面的代码
if(oDriver.findElement(By.xpath(".//*[@id='0_CASE_fileDiv']")).isDisplayed()){
Utility.constant.objLogs.writeLog("File selected succesfully");
}else{
Utility.constant.objLogs.writeLog("File not selected");
}
Utility.constant.objLogs.writeLog("After choosing case file");
String sBtnuploadCaseRelatedFilexpath = (String) constant.hashXPaths.get("btnUploadCaseRelatedFile");
WebElement oBtnuploadCaseRelatedFile = FindElement(oDriver,sBtnuploadCaseRelatedFilexpath);
Utility.constant.objLogs.writeLog("After finding xpath of upload btn ");
oBtnuploadCaseRelatedFile.click();
oGeneric.sleepTimer(10);
Utility.constant.objLogs.writeLog("After click on upload btn ");
如果条件bcz上传btn是不可见的bcz文件没有被选中,脚本会失败。