我正在尝试从Selenium Java的下拉列表中选择一项
HTML
<div class="aui-ss aui-ss-has-entity-icon" id="issueTypeKey-single-select" data-query=""><input autocomplete="off" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" class="text aui-ss-field ajs-dirty-warning-exempt" id="issueTypeKey-field" type="text"><div class="ajs-layer-placeholder"><div class="ajs-layer box-shadow" aria-hidden="true" style="width: 53px; position: absolute; left: 759px; top: 302px; max-height: 328px; display: none;"><div class="aui-list" id="issueTypeKey-suggestions" tabindex="-1" role="listbox" style="display: block;"><div class="aui-list-scroll" tabindex="-1" role="presentation"><ul class="aui-last"><li class="aui-list-item aui-list-item-li-purchase active" role="option" id="purchase-1"><a class="aui-list-item-link aui-iconised-link" role="presentation" href="#"><img class="icon" alt="" src="/servicedesk/issue-type-icons?icon=purchase">Purchase</a></li><li class="aui-list-item aui-list-item-li-fault" role="option" id="fault-2"><a class="aui-list-item-link aui-iconised-link" role="presentation" href="#"><img class="icon" alt="" src="/servicedesk/issue-type-icons?icon=fault">Fault</a></li><li class="aui-list-item aui-list-item-li-access" role="option" id="access-3"><a class="aui-list-item-link aui-iconised-link" role="presentation" href="#"><img class="icon" alt="" src="/servicedesk/issue-type-icons?icon=access">Access</a></li></ul></div></div></div></div><span class="icon aui-ss-icon noloading drop-menu"><span>More</span></span><img class="aui-ss-entity-icon" alt="" src="/servicedesk/issue-type-icons?icon=it-help"></div>
<input autocomplete="off" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" class="text aui-ss-field ajs-dirty-warning-exempt" id="issueTypeKey-field" type="text" aria-controls="issueTypeKey-suggestions">
<div class="aui-list" id="issueTypeKey-suggestions" tabindex="-1" role="listbox"></div>
<span class="icon aui-ss-icon noloading drop-menu"><span>More</span></span>
</div>
<select class="select imagebacked aui-ss-select" data-edit-value="" name="issueTypeId" id="issueTypeKey" multiple="multiple" style="display: none;"><option value="10000" style="background-image: url(/servicedesk/issue-type-icons?icon=it-help);">IT Help</option><option value="10001" style="background-image: url(/servicedesk/issue-type-icons?icon=purchase);">Purchase</option><option value="10002" style="background-image: url(/servicedesk/issue-type-icons?icon=fault);">Fault</option><option value="10003" style="background-image: url(/servicedesk/issue-type-icons?icon=access);">Access</option></select>
</td>
<td class="request-type-description"><textarea class="textarea-cell" name="description"></textarea></td>
<td class="request-type-actions"><div><input type="submit" class="aui-button aui-button-primary create-request-type-button" value="Create request type" resolved=""></div></td>Java selenium
Select select=new Select(driver.findElement(By.xpath("//div[@id='issueTypeKey-single-select']/")));
select.selectByVisibleText("Fault");我想选择的选项称为“错误”。
请注意,我不能使用"Select“功能,因为我的HTML是"input”
有什么建议吗?
发布于 2016-07-25 13:10:43
看一看Selenium WebDriver - Filling In Forms documentation。还有你的身份。issueTypeKey-single-select不在超文本标记语言中--您可能想要访问issueTypeKey。这是display: none;,它应该是可见的,可以与之交互
Select select=new Select(driver.findElement(By.xpath("//div[@id='issueTypeKey']")));
select.deselectAll();
select.selectByVisibleText("Fault");发布于 2016-07-25 13:31:58
我以前不得不处理一些非原生选择元素,并且很幸运,只需单击“输入”,然后在弹出的选项上单击。请注意,您可能需要等待选项可见,因为元素位置和显示select下拉选项的页面创建了竞争条件。此外,当您的代码中有一个id时,直接通过该id进行选择要比使用XPath来选择id更简洁。试一下下面的例子:
WebElement input = driver.findElement(By.id("issueTypeKey-field"));
input.click();
WebElement fault = input.findElement(By.linkText("Fault"));
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOf(fault))
.click();首先,驱动程序单击id为issueTypeKey-field的元素。这将显示select选项。通过创建web驱动程序等待对象并使用预期的条件,您可以等待链接文本所在的元素为其isDisplayed方法返回true。一旦它从等待中返回,它就会被点击。10设置超时时间(以秒为单位),在此期间等待将不断尝试检查元素是否变为可见。如果到达超时时间并且元素不可见,则将抛出TimeoutException。该示例将WebElements保存为变量以供稍后使用,这通常不是我所希望的(因为StaleElementReferenceExceptions的可能性取决于页面),但在本例中,您将希望限制在输入中搜索Fault元素。
https://stackoverflow.com/questions/38551123
复制相似问题