【发布时间】:2013-06-29 03:30:54
【问题描述】:
大家下午好,
所以我的问题是我试图在隐藏的下拉菜单中选择字段。以下是上述下拉菜单之一的 HTML 代码。
<div id="mainForm:defectPriorityField" class="ui-selectonemenu ui-widget ui-state-default ui-corner-all ui-helper-clearfix" style="width:120px">
<div class="ui-helper-hidden">
<select id="mainForm:defectPriorityField_input" name="mainForm:defectPriorityField_input">
<option value="1-Urgent">1-Urgent</option>
<option value="2-Very High">2-Very High</option>
<option value="3-High">3-High</option>
<option value="4-Medium">4-Medium</option>
<option value="5-Low">5-Low</option>
</select>
现在我已经阅读了有几种方法可以做到这一点。下面似乎是最受欢迎的。
String cssSelector= ...
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+cssSelector+"\');");
stringBuilder.append("x.click();");
js.executeScript(stringBuilder.toString());
下拉菜单的 xpath 是 //*[@id="mainForm:defectPriorityField_input"] 我对此比较陌生,不确定如何生成或获取 cssSelector。请如果有人能指出我正确的方向,将不胜感激。
【问题讨论】:
-
我认为正确的方法是实际单击下拉菜单以显示不再隐藏并且可以轻松选择它们的选项。你试过这样做吗?
-
是的,我可以这样做,但是这样做还有另一个问题,一些下拉菜单是动态的,其中的内容正在发生变化。在下拉列表中选择项目的唯一方法是通过它的 xpath。这取决于下拉菜单的大小是否增加等而变化。
-
我原本打算这样做。选择参数SelectField = new Select(driver.findElement(By.id("mainForm:defectPriorityField_input"))); parameterSelectField.selectByVisibleText("5-Low");但是由于是隐藏字段,所以选择方法是行不通的。
-
隐藏字段不适用于 selenium,您将不得不使用一些狡猾的 js,我个人从未能够开始工作,但其他人已经取得了成功,所以也许您会比我有。
-
您所指的动态下拉菜单我想不是随机的吧?它们是否有您可以关闭的文本或控制它们包含的内容的先前选择?
标签: java xpath selenium webdriver css-selectors