如何选择下拉列表中不在select标签中的值..?

时间:2014-10-11 07:59:55

标签: java eclipse selenium

我使用selenium-RC进行自动化java(Eclipse Kepler)。我在option中选择drop down list时遇到了一些问题,select中的span标记不在mouse click

我想测试一个页面,其中有一个用于选择城市名称的下拉列表。下拉列表只有在我给出一些价值时才出现,例如“班加罗尔”我必须输入“禁令”,然后显示下拉菜单,然后我选择班加罗尔城市“down-arrow and enter key”或“JavaScript functions” {1}}“但是当我运行我的selenium rc脚本时,在键入”禁止“后它会失败,下拉列表不会出现。我尝试在select命令中使用xpath和id,单击命令。我被困在这里请有人帮我解决这个问题。我认为它是动态的,基于w.click("//*[@id='homedeliveryform']/div[1]/span/a/span[1]"); w.click("//*[@id='ui-active-menuitem']"); 。还有一个..接下来的两个下拉取决于第一个下拉(即第二个)第三个下拉列表被隐藏,第一个下拉列表显示为_default。) 我正在发送我正在尝试测试脚本的页面链接:https://pizzaonline.dominos.co.in

我尝试使用以下命令: -

1:

w.type("//*[@id='homedeliveryform']/div[1]/span/input","ban");
w.click("//*[@id='ui-active-menuitem']");

2:

w.select(" id=combobox", "value=BANGALORE");

3:

w.type(" id=combobox", "value=BANGALORE");

4:

{{1}}

4 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。这就是我解决它的方法:

  1. 在组合框中找到箭头按钮并单击它,将出现下拉列表。

  2. 下拉列表与组合框没有任何关系,它是一个单独的列表,只显示在正确的位置,因此看起来它属于组合框。下拉列表实际上是一个<ul> - 元素,似乎不太容易找到。无论如何,有许多<li> - 元素<a> - 元素,其中包含文本。

答案 1 :(得分:0)

我可以看到你试图从下拉列表中选择一个webelement(班加罗尔),直到你点击它为止。以下是您选择隐藏网页元素的方法。

第一种方式:使用相同的js单击任何元素不是问题。如您所知,如何获取任何选项,最后的操作是执行单击。这应该适合你:

WebElement hiddenWebElement =driver.findElement(By(..selector of the element....));
    ((JavascriptExecutor)driver).executeScript("arguments[0].click()",hiddenWebElement);

第二路:

String cssSelector= ...//i gave them in your previous question
JavascriptExecutor js = (JavascriptExecutor) driver;
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("var x = $(\'"+cssSelector+"\');");
    stringBuilder.append("x.click();");
    js.executeScript(stringBuilder.toString());

第三种方式:使用操作构建器,高级用户操作API。你可以在这里阅读它并且代码会像那样:

WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).click();
sbEle = driver.findElement(By.Id("sbEle")).click();

Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.moveToElement(mnEle).Perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).click();

答案 2 :(得分:0)

嘿,非常感谢你的帮助。

我解决了这个问题
 w.keyPressNative(String.valueOf(KeyEvent.VK_B));
          w.keyPressNative(String.valueOf(KeyEvent.VK_A));
          w.keyPressNative(String.valueOf(KeyEvent.VK_N));
          w.keyPressNative("40");                           // down arrow key
          Thread.sleep(4000);
          w.keyPressNative("10");                           //Enter key

答案 3 :(得分:-4)

在下面的场景中,我所做的是......(dropdwon在表中)

  1. 点击了小区
  2. 从表中获取所有单元格值(可能列表将配置为表或列表..这里是表)
  3. 遍历所有细胞。
  4. 根据单元格值单击所需的值。

    driver.findElement(By.id("ms__id3")).click();
    WebElement table = driver.findElement(By.className("combo-list-table"));
    allRows = table.findElements(By.tagName("tr"));
    for (WebElement row : allRows) 
    {
    cells = row.findElements(By.tagName("td"));
    for (WebElement cell : cells) 
    {   
    if(cell.getAttribute("text").equalsIgnoreCase("Business"))
    {
    cell.click();
    }
    }
    }
    
  5. 希望这会有所帮助...... :)