首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java从Selenium Webdriver的组合框中选择一项

使用Java从Selenium Webdriver的组合框中选择一项
EN

Stack Overflow用户
提问于 2016-07-24 18:39:14
回答 2查看 2.6K关注 0票数 0

我正在尝试从Selenium Java的下拉列表中选择一项

HTML

代码语言:javascript
复制
<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

代码语言:javascript
复制
Select select=new Select(driver.findElement(By.xpath("//div[@id='issueTypeKey-single-select']/")));
select.selectByVisibleText("Fault");

我想选择的选项称为“错误”。

请注意,我不能使用"Select“功能,因为我的HTML是"input”

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2016-07-25 13:10:43

看一看Selenium WebDriver - Filling In Forms documentation。还有你的身份。issueTypeKey-single-select不在超文本标记语言中--您可能想要访问issueTypeKey。这是display: none;,它应该是可见的,可以与之交互

代码语言:javascript
复制
Select select=new Select(driver.findElement(By.xpath("//div[@id='issueTypeKey']")));
select.deselectAll();
select.selectByVisibleText("Fault");
票数 0
EN

Stack Overflow用户

发布于 2016-07-25 13:31:58

我以前不得不处理一些非原生选择元素,并且很幸运,只需单击“输入”,然后在弹出的选项上单击。请注意,您可能需要等待选项可见,因为元素位置和显示select下拉选项的页面创建了竞争条件。此外,当您的代码中有一个id时,直接通过该id进行选择要比使用XPath来选择id更简洁。试一下下面的例子:

代码语言:javascript
复制
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元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38551123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档