我正在处理Jira
并编写一个硒testcase
来附加Jira
对话框中的附件,该对话框会在点击按钮时弹出。
可以通过单击我尝试使用sendKeys
发送要附加的文件的绝对路径的浏览按钮来添加附件。
基本上,在对话框弹出之前,css
屏幕中会显示相同的Jira
细分,并且对话框中也会显示相同的标记参数。
对话的html如下:
<div class="jira-dialog-content">
<form id="issue-workflow-transition" class="aui" method="post" enctype="multipart/form-data" action="/jira/secure/CommentAssignIssue.jspa">
<div class="form-body" style="max-height: 236px;">
<fieldset class="group">
<legend>
<span>Attachment</span>
</legend>
<div class="field-group file-input-list long-field">
<div class="issue-drop-zone -dui-type-parsed" data-upload-size="10.00 MB" data-upload-limit="10485760" duitype="dndattachment/dropzones/CreateIssueDropZone">
<div class="issue-drop-zone__target"></div>
<span class="issue-drop-zone__text">
<span class="issue-drop-zone__drop-icon"> </span>
Drop files to attach, or
<button class="issue-drop-zone__button" type="button"> browse.</button>
<input class="issue-drop-zone__file ignore-inline-attach" type="file" multiple="">
</span>
</div>
<input type="hidden" name="dnd-dropzone">
</div>
</fieldset>
</div>
</form>
</div>
&#13;
我想使用selenium从这个html中获取此元素并传递文件的绝对路径。
<input class="issue-drop-zone__file ignore-inline-attach" type="file" multiple="">
我无法完成这项工作。当我在页面上使用
尝试此操作时driver.FindElement(By.className('issue-drop-zone__file'))
然后我可以附上附件。
但是我无法从对话中获得同样的东西。有人可以就如何做到这一点给出一些指示。
我也用过: -
driver.FindElement(By.cssSelector('#issue-workflow-transition > div.form-body > fieldset > div > div > span > input'))
但selenium
抱怨
找不到元素
答案 0 :(得分:1)
实际上,您已尝试的cssSelector
看起来不正确,无法在对话框中找到dropzone
上传文件元素,我已使用WebDriverWait
对其进行了测试,等待上传dropzone
上传的对话框文件然后执行sendKeys()
到对话框dropzone
元素,它正常工作如下: -
WebDriverWait wait = new WebDriverWait(driver, 10);
//Now click on create button to open dialog
wait.until(ExpectedConditions.elementToBeClickable(By.id("create_link"))).click();
//now sendKeys on upload button
wait.until(ExpectedConditions.presenceOfElementLocated(By.className("issue-drop-zone__file"))).sendKeys("you file to upload");
答案 1 :(得分:0)
发送键到输入对话框始终有效。 尝试单击对话框并使用第三方软件(如autoit \ encoded ui)上传文件。 您可以使用以下自动脚本:
$FirefoxUpload = "File upload"
$ChromeUpload = "Open"
if WinExists($FirefoxUpload)
$UploadWindow = $FirefoxUpload
elseif WinExists($ChromeUpload)
$UploadWindow = $ChromeUpload
else
$UploadWindow = ""
endif
if $UploadWindow <> ""
ControlFocus($UploadWindow,"","Edit1")
ControlsetText($UploadWindow,"","Edit1","C://file.xls")
Contro
lClick($UploadWindow,"","Button1")
endif
发现答案 How to automate upload file in different browser using single AutoIT script?