使用Selenium Web驱动程序在Jira对话框中选择一个元素(弹出)

时间:2016-09-12 10:33:58

标签: selenium selenium-webdriver jira

我正在处理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;
&#13;
&#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抱怨

  

找不到元素

2 个答案:

答案 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?