Selenium-webdriver在JavaScript中获取子元素数

时间:2014-05-22 23:45:42

标签: selenium selenium-webdriver webdriver

假设我的html是这样的

<select class="list">
  <option val="00"></option>
  <option val="01">One</option>
</select>

这个js测试文件能够运行,但我试图在选择列表中获取子元素的数量。

var assert = require('assert'),
  test = require('selenium-webdriver/testing'),
  webdriver = require('selenium-webdriver');

var demoFile = '/path/to/my/test.html';
driver.get(demoFile);

//Setup driver
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).build();

//Get the child elements of select list, which are the options
var ele = driver.findElement(webdriver.By.className('list'))
  .findElements(webdriver.By.tagName('option')));

//size is undefined
ele.size();

但是,当我尝试获取选项计数时,我收到以下错误。

TypeError: Object [object Object] has no method 'size'

3 个答案:

答案 0 :(得分:1)

我发现了&#39;然后&#39;回调,用于查找此问题中元素的数量

Selecting nested iframe - selenium / javascript / node-js

driver.findElement(webdriver.By.className('list'))
  .findElements(webdriver.By.tagName('option')))
  .then(function(elements){
    console.log(elements.length);
});

答案 1 :(得分:0)

您可以使用Select功能:

Select select = new Select(driver.findElement(webdriver.By.className('list')));
List<WebElement> listOptions = select.getOptions();
listOptions.size();

答案 2 :(得分:0)

findElement仅返回单个webElement。应该使用findElements返回webElement列表