Selenium:无法从下拉框中选择项目

时间:2016-08-30 13:11:02

标签: java html selenium

我在Ubuntu Mate 16.04上使用Selenium 3和Firefox 48。我想从下拉框中自动选择一个项目,但它总是失败。

这是我的方法:

package mypackage;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;


public class Main {

public static void main(String[] args) {

(new Main()).doit();

}

void doit() {
String geckoPath = "/opt/geckodriver"; // System dependent
String baseUrl = "https://developer.mozilla.org/en/docs/Web/HTML/Element/select";

System.setProperty("webdriver.gecko.driver", geckoPath);

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(120, TimeUnit.SECONDS);

driver.get(baseUrl);

// convinience click to scroll near dropdown box
driver.findElement(By.id("Result")).click();

WebElement elem = driver.findElement(By.name("select"));
//elem.click(); // verify we have the right element
Select dropdown = new Select(elem);

System.out.println("Selected option (before): " + dropdown.getFirstSelectedOption().getText());

synchronized (this) {
    try {
        wait(2000); // redundant; just to be safe we are not too fast
    } catch (Exception e) {}
}

//dropdown.selectByVisibleText("Value 3");
dropdown.selectByValue("value3");
System.out.println("Selected option (after): " + dropdown.getFirstSelectedOption().getText());

return;
}


}

该元素被正确识别,可以通过取消注释//elem.click()行来确定。但是,选择永远不会发生。我尝试使用哪种功能无关紧要selectByVisibleText("Value 3")selectByValue("value3")

它可能是Selenium框架中的一个错误,因为它仍处于测试阶段,但我不确定。如果它实际上是一个错误,那么如果有人可以共享Selenium 2二进制文件的链接,我将不胜感激。我尝试从Github下载Selenium 2但是构建失败了。它的文档也很差,所以我不确定在编译后如何处理二进制文件。 Selenium 3框架有一些我在Selenium 2中没有看到的第三方二进制文件。不确定我是否必须将它们下载到其他地方或者只是不需要它们。

PS:如果你想尝试上面的例子,那么你将不得不改变你的gecko-driver的路径。

0 个答案:

没有答案