大家下午好,
所以我的问题是我正在尝试选择隐藏的下拉菜单中的字段。下面是其中一个下拉菜单的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。如果有人能指出我正确的方向,我们将不胜感激。
答案 0 :(得分:0)
这是我采取的方法,首先点击下拉菜单,然后选择一个选项:
WebElement dropdown = driver.findElement(By.xpath("//div[@id=\"mainForm:defectPriorityField\"]);
dropdown.click();
WebDriverWait waitForOptions = new WebDriverWait(driver, 3);
waitForOptions.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id=\"mainForm:defectPriorityField_input\"]")));
WebElement option = driver.findElement(By.xpath("//div[@id=\"mainForm:defectPriorityField_input\"]/option[text()=\"1-Urgent\"]"));
option.click();
请原谅任何语法错误,但这基本上就是这个想法。在选项元素的最后一个语句中,您可以将文本“1-Urgent”替换为变量或您喜欢的任何内容。
答案 1 :(得分:0)
如果元素是隐藏的,则不应使用它。因为用户也不会。
如果不是,那么为什么不使用SelectElement?
SelectElement sel = new SelectElement(driver.FindElement(By.Id("Id")));
sel.SelectByValue("Value");