【发布时间】:2020-05-09 13:38:28
【问题描述】:
我正在尝试自动化上传文件功能。我曾尝试使用不同的 xpath 来获取 input element,但似乎我可能做的不对。
我的输入元素没有 id
<input name="qqfile" title="file input" style="margin: 0px; padding: 0px; top: 0px; height: 100%; right: 0px; font-family: Arial; font-size: 3500px; position: absolute; cursor: pointer; opacity: 0;" type="file" qq-button-id="7ca76e6f-e8ac-49f4-ab1e-c143e4af60d8">
并且在同一个html中还有另一个同名的input元素。
<input name="qqfile" title="file input" style="margin: 0px; padding: 0px; top: 0px; height: 100%; right: 0px; font-family: Arial; font-size: 3500px; position: absolute; cursor: pointer; opacity: 0;" type="file" multiple="" qq-button-id="b5ebbdcb-6f33-4f10-a569-5dba94f54d0e">
因此,当我使用 By.xpath("//input[contains(@name,'qqfile')] 时,我得到一个 Element not visible exception
我认为这是因为上下文中存在具有相同名称的 2 个元素。
如何唯一标识每个元素?
附加 HTML 代码:
<div tabindex="15" id="annUploadDoc"><div class="qq-uploader-selector qq-uploader" qq-drop-area-text="Drop files here">
<div class="qq-total-progress-bar-container-selector qq-total-progress-bar-container qq-hide">
<div class="qq-total-progress-bar-selector qq-progress-bar qq-total-progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="qq-upload-drop-area-selector qq-upload-drop-area" style="display: none;" qq-hide-dropzone="">
<span>Drop files here to upload</span>
</div>
<div class="qq-upload-button-selector qq-upload-button" style="overflow: hidden; position: relative; direction: ltr;">
<div class="btn upload btn-style-3">
<div>Browse</div>
</div>
<input name="qqfile" title="file input" style="margin: 0px; padding: 0px; top: 0px; height: 100%; right: 0px; font-family: Arial; font-size: 3500px; position: absolute; cursor: pointer; opacity: 0;" type="file" qq-button-id="fd389870-bdb2-480e-8138-8f2ff762de22"></div>
<span class="qq-drop-processing-selector qq-drop-processing qq-hide">
<span>Processing dropped files...</span>
<span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span>
</span>
<ul class="qq-upload-list-selector qq-upload-list" aria-live="polite" aria-relevant="additions removals"></ul>
<dialog class="qq-alert-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<a class="qq-cancel-button-selector" href="javascript:void(0)">Close</a>
</div>
</dialog>
<dialog class="qq-confirm-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<a class="qq-cancel-button-selector" href="javascript:void(0)">No</a>
<a class="qq-ok-button-selector" href="javascript:void(0)">Yes</a>
</div>
</dialog>
<dialog class="qq-prompt-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<input type="text">
<div class="qq-dialog-buttons">
<a class="qq-cancel-button-selector" href="javascript:void(0)">Cancel</a>
<a class="qq-ok-button-selector" href="javascript:void(0)">Ok</a>
</div>
</dialog>
</div></div>
【问题讨论】:
-
你能添加更多的html吗?也许你应该附加到父元素
-
@Evgeniy 即使我尝试获取父元素并附加到它,也没有任何反应。 sendKeys() 不起作用。我想这可能是因为我只需要将它附加到输入元素?
-
请添加更多的html,我会尝试写xpath
-
@EvgeniyChiruk 我在问题中添加了额外的 HTML。请检查并帮助我。
标签: java html selenium selenium-webdriver