selenium selectByVisibleText无法正常工作

时间:2014-07-02 06:10:11

标签: selenium xpath webdriver

我试图从以下选择列表中选择'float'选项:

<select id="pt1:tabs:ruleDictEditorTab:r2:bsets_ddc:iter:0:bse_dc:bse1:dtype::content" class="x2h" title="int" name="pt1:tabs:ruleDictEditorTab:r2:bsets_ddc:iter:0:bse_dc:bse1:dtype" _afrfoc="y1404280666174">
    <option value="0" title="String">String</option>
    <option selected="" value="1" title="int">int</option>
    <option value="2" title="double">double</option>
    <option value="3" title="char">char</option>
    <option value="4" title="byte">byte</option>
    <option value="5" title="short">short</option>
    <option value="6" title="long">long</option>
    <option value="7" title="float">float</option>
    <option value="8" title="Date">Date</option>
    <option value="9" title="Time">Time</option>
    <option value="10" title="DateTime">DateTime</option>
</select>

我的硒代码是:

Select typeSelect = new Select(driver.findElement("//select"));
typeSelect.selectByVisibleText("float");

运行时,我看到select被改为'float'一秒钟,但它立即改回了默认的'int'选项。有没有人见过这种问题?怎么解决呢?

2 个答案:

答案 0 :(得分:1)

可能有一些JavaScript阻止它像这样改变。您必须使用click()来更改值。像这样:

driver.findElement(By.xpath("//select")).click();
driver.findElement(By.xpath("//option[text()='float']")).click();

另请参阅this post了解其他方法。

答案 1 :(得分:0)

尝试以下逻辑

new Select(driver.findElement(By.cssSelector("select[id*='ruleDictEditorTab']"))).selectByVisibleText("float");

driver.findElement(By.cssSelector("select[id*='ruleDictEditorTab']")).findElement(By.cssSelector("option[title='float']")).click();