无法从Selenium IDE

时间:2016-05-31 04:34:07

标签: selenium xpath drop-down-menu

我正在写一个包含下拉列表的Selenium脚本。

<select id="seats" class="form-control" name="seats">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="3">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">22</option>
<option value="23">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
</select>

我在堆栈溢出中查看了几个答案,以便在每次失败时选择一个值表单下拉框。甚至试图从Selenium IDE获取xpath。在这种情况下,我对下拉列表和值都有相同的相对XPath。

以下是我目前正在使用的代码。

driver.findElement(By.id("seats")).click();
driver.findElement(By.xpath("//form[@id='side-form']/div/div/div/div/div[3]/div/select")).click();

我需要选择的是4.但是,选择1。

有人可以告诉我如何从我的下拉列表中选择4。任何帮助将不胜感激。

提前致谢。 :)

2 个答案:

答案 0 :(得分:1)

请尝试以下示例

WebElement select = driver.findElement(By.id("seats"));
 List<WebElement> allOptions = select.findElements(By.tagName("option"));
 for (WebElement option : allOptions) {
        if(option.getText().equals("4")){
           option.click();
        }
 }

修改

{{1}}

答案 1 :(得分:1)

您的下拉列表有两个具有相同值的选项,这有点尴尬。无论如何,这是一个可能的XPath,它将从option等于'席位'的下拉列表中返回特定值的最后id

driver.findElement(By.xpath("//select[@id='seats']/option[@value='3'][last()]")).click();