Selenium webdriver:下拉元素选择抛出元素不可见异常

时间:2017-01-12 14:09:36

标签: java selenium selenium-webdriver

我使用的是Selenium和Java Webdriver,我是Selenium的新手。 我有一个与此Thread类似的问题,我尝试了几种方法。我只是想得到这个下拉列表的第一个元素(它会很快变长)并选择它来测试带有junit的输入掩码。 以下是该网站的摘录:

<md-option ng-repeat="customer in settingsCtrl.customers" value="1" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="true" id="select_option_4" style="" selected="selected">
<div class="md-text ng-binding">FirstCustomer</div>
<div class="md-ripple-container" style=""></div>
</md-option>

我试过以下:

WebDriverWait wait = new WebDriverWait(driver, 300);

    WebElement customer = driver.findElement(By.id("select_option_4"));
    //customer.click();

    //wait.wait();

    List <WebElement> rows = customer.findElements(By.tagName("div"));
    System.out.println("row size: " + rows.size());
    // Debug text
    Iterator<WebElement> i  = rows.iterator();
    while(i.hasNext()){
        WebElement row = i.next();
        System.out.println("row text: " + row.getText() );

    }
    rows.get(0).click();

错误消息与线程中的错误:ElementNotVisibleException

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我认为在rows.get(0).click()之后,下拉列表将会关闭,这就是您收到错误的原因。

如果您想从下拉列表中获取所有文本,请在我上面提到的代码行之前执行

答案 1 :(得分:1)

您是否尝试过将该下拉列表视为Select webelement?

选择custDrop = new选择(driver.findElement(By.id(&#34; select_option_4&#34;)));

列出rows = custDrop.getAllSelectedOptions();

然后所有下拉列值都在行字符串数组中。

如果您只想选择第一个选项,则无论如何:

custDrop..selectByIndex(0);

如果您提前知道它们是什么,您也可以按值或通过可见文本进行选择。

答案 2 :(得分:1)

使用以下功能验证元素是否在页面上可见。

isDisplayed()