【问题标题】:Selecting an element in a Jira dialogue (pop up) using Selenium Web driver使用 Selenium Web 驱动程序在 Jira 对话框(弹出)中选择一个元素
【发布时间】:2016-09-12 20:58:43
【问题描述】:

我正在处理 Jira 并编写一个 selenium testcase 以附加来自Jira 对话框的附件,该对话框在单击按钮时弹出。

可以通过单击浏览按钮添加附件,我尝试使用sendKeys 发送要附加的文件的绝对路径。

在弹出对话框之前,Jira 屏幕中基本上存在相同的css 段,并且在具有相同标签参数的对话框中也存在。

对话的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>

我想使用 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 抱怨说

没有找到元素

【问题讨论】:

  • 不,我没有点击输入。相反,我使用 sendKeys 函数发送文件的绝对路径

标签: selenium selenium-webdriver jira


【解决方案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");

【讨论】:

  • 这确实有效。我根据自己的需要进行了一些更改,并且能够使其正常工作。非常感谢@Saurabh Gaur
【解决方案2】:

向输入对话框发送密钥始终有效。 尝试单击对话框并使用第三方软件(如 autoit\coded ui )上传文件。 您可以使用以下 autoit 脚本:

$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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多