java - 无法从 Firefox 的下拉菜单中进行选择

标签 java selenium selenium-webdriver selenium-chromedriver selenium-firefoxdriver

我正在使用JavaSelenium来编写测试。我有一个下拉菜单,我需要从中选择一些内容。这是我的代码:

 Select s= new Select(driver.findElement(By.xpath("blabla")));
 s.selectByVisibleText("theName");

它可以在 Chrome 上运行,但在 Firefox 47 上我收到此错误:

org.openqa.selenium.ElementNotVisibleException: 
Element is not currently visible and so may not be interacted with

我知道如何通过其他方式从下拉菜单中进行选择,但我需要使用 Select 对象。

最佳答案

使用Fluent wait来等待元素,chrome更快:

public static void waitUntilElementIsVisible(WebElement element, WebDriver driver) 
{        
    FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);
    wait.pollingEvery(250,  TimeUnit.MILLISECONDS);
    wait.withTimeout(2, TimeUnit.MINUTES);
    wait.ignoring(ElementNotVisibleException.class); //make sure that this exception is ignored
    Function<WebDriver, WebElement> function = new Function<WebDriver, WebElement>()
            {
                public WebElement apply(WebDriver driver) {
                    System.out.println("Checking for the element!!");                       
                    if(element.isDisplayed() != true)
                    {
                        System.out.println("Target element is not visible");
                    }
                    return element;
                }
            };

    wait.until(function);
}

然后你可以调用它:

WebElement el = driver.findElement(By.xpath("blabla"));
waitUntilElementIsVisible(el, driver);

关于java - 无法从 Firefox 的下拉菜单中进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39401038/

相关文章:

java - 忽略 Jackson 反序列化中的中间数组包装对象

java - 如何将公钥转换为 BigInteger

java - Selenium webdriver 通过匹配来自其他列的文本来获取同一行中相邻列的文本

java - 如何在静默模式下使用 IE 驱动程序运行用 java 编写的 selenium webdriver 脚本

java - Spring Security 自定义 ldap 身份验证提供程序

Java - 从父类(super class)的ArrayList中排序出子类

java - 我无法为在 headless 模式下运行的 ChromeDriver 设置 cookie

java - 使用 Java 的 Selenium Webdriver - 带双斜杠的 sendkeys

javascript - 守夜人 : Is there a way to find out if executeAsync has executed the javascript?

java - 元素 MyElement 在点 (x, y) 处不可点击...其他元素将收到点击