0

大家下午好,

所以我的问题是我试图在隐藏的下拉菜单中选择字段。以下是上述下拉菜单之一的 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。请如果有人能指出我正确的方向,将不胜感激。

4

2 回答 2

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”替换为变量或您喜欢的任何内容。

于 2013-07-01T22:03:39.637 回答
0

如果一个元素是隐藏的,你不应该使用它。因为用户也不会。

如果不是,那么为什么不使用 SelectElement?

    SelectElement sel = new SelectElement(driver.FindElement(By.Id("Id")));
    sel.SelectByValue("Value");
于 2013-07-02T12:56:43.893 回答