【问题标题】:Selenium Dropdown selection not working硒下拉选择不起作用
【发布时间】:2017-02-21 15:50:02
【问题描述】:

通过 Eclipse IDE 使用 Java 测试 firefox。 以下是我要测试的网站的 HTML 代码:

<td class="selectCommandHolder">
<select id="MainContent_DropDownQueryField" name="ctl00$MainContent$DropDownQueryField" aria-invalid="false">
<option value="ICAO" selected="selected"> ICAO </option>
<option value="IATA"> IATA </option>
<option value="Airfields.Name"> Name </option>
<option value="City"> City </option>
<option value="States.Name"> State </option>
</select>
</td>

默认选项是第一个,“ICAO”。 试图让我的测试通过值选择第二个“IATA”。 Selenium java代码如下:

    WebElement searchOption = driver.findElement(By.id("MainContent_DropDownQueryField")); 

    Select searchIATA = new Select(searchOption); 

    WebElement selected_value = searchIATA.getFirstSelectedOption();
    System.out.println("Selected values is "+ selected_value.getText());

    Thread.sleep(1000);
    searchIATA.selectByValue("IATA");

    if (searchIATA.getFirstSelectedOption().getText().trim().equals("IATA")){
        System.out.println("succesfully selected IATA.");
    } else{
        System.out.println("selected value is not IATA, it is:" + selected_value.getText());
    }

由于某种原因,我无法选择 IATA,尽管我相信我正在正确地尝试定位它。我的控制台输出如下所示:

1487691940734   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691940749   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691940760   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691940769   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691940777   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
Selected values is ICAO
1487691941789   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691941795   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691941801   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691941822   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
1487691941829   Marionette  INFO    sendAsync 162acaca-70ac-8e4f-96ff-1b3bd1a5c1ef
Selected values is not IATA, it is: ICAO

我可以打印“allSelectedOptions”,它会显示上面的“选项值”列表。我在这里错过了什么?

【问题讨论】:

    标签: java selenium select dropdown


    【解决方案1】:

    我认为您的代码中有一些错误,您正在检查 if condition 中的旧值而且您的下拉值中有空格,因此它与您的 string 不匹配

    如下更改你的代码并尝试-

    searchIATA.selectByValue("IATA");
    if (searchIATA.getFirstSelectedOption().getText().trim().equals("IATA"))
     {
      System.out.println("Succesfully selected IATA.");
     }
      else
      {
          System.out.println("Selected values is not IATA, it is: "+ selected_value.getText());
      }
    

    更新完整代码

        WebElement searchOption = driver.findElement(By.id("MainContent_DropDownQueryField")); 
    
        Select searchIATA = new Select(searchOption); 
    
        WebElement selected_value = searchIATA.getFirstSelectedOption();
        System.out.println("Selected values is "+ selected_value.getText());
    
        Thread.sleep(2500);
        searchIATA.selectByValue("IATA");
        Thread.sleep(2500);
        System.out.println(searchIATA.getFirstSelectedOption().getText());
    
        if (searchIATA.getFirstSelectedOption().getText().trim().equals("IATA"))
        {
            System.out.println("Succesfully selected IATA.");
        }
        else
        {
             System.out.println("Selected values is not IATA, it is: "+ selected_value.getText());
        }
    }
    

    【讨论】:

    • 我试过了,还是一样的输出:ICAO。更新了我的原始帖子以包含此代码。可惜没有进展
    • 您是否在网页上看到更改的下拉值?
    • 如果是,则在选择下拉列表后添加Thread.sleep(2000),检查可能需要一些时间来选择
    • 不,当我观看网络浏览器尝试选择时,它不会改变。我还尝试了“searchIATA.selectByVisibleText(" IATA ") 与空格,但这会引发“无法找到文本”错误,所以我仍在按值“IATA”搜索
    • 如果您没有看到下拉值更改,那么您的代码可以正常工作。你可以尝试使用 - selectByIndex()
    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    相关资源
    最近更新 更多