使用webdriver.js,如何获取<select>?</select>的选定选项

时间:2014-03-03 17:54:42

标签: javascript selenium selenium-webdriver

java和C#有很多答案,但我无法在javascript中找到它。似乎API不同......

4 个答案:

答案 0 :(得分:5)

是的,这是可能的。假设我们有以下选择元素:

<select name="test" id="select">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

您可以使用getValue获取当前选定的选项,并可以使用单击更改选择。这是一个简单的例子:

var webdriverjs = require('webdriverjs'),
    client      = webdriverjs.remote({desiredCapabilities:{browserName:'phantomjs'}}).init();

client
    .url('http://localhost:8080')
    .getValue('#select',function(err,val){
        console.log(val); // will output "1"
    })
    .click('//*[@id="select"]/option[3]')
    .getValue('#select',function(err,val){
        console.log(val); // will output "3"
    })
    .end();

希望有所帮助。

欢呼声

答案 1 :(得分:2)

对于那些只是寻找纯WebDriverJS解决方案而不是任何特定于webdriver.io或量角器的框架的人来说,这里是代码,

var element = driver.findElement(wd.By.id('mySelect'));
element.getAttribute('value').then(function(selected) {
   if(selected === 'the one I expected') {
       done();
   } 
   else {
     done(new Error('something went wrong');
   }
});

答案 2 :(得分:2)

如果您需要option元素,请使用then回调的返回值:

driver.findElement(By.css('select[name=eventTypes]'))
  .then((select) => {
    return select.getAttribute('value').then((value) => {
      return {select: select, value: value};
    });
  })
  .then((data) => {
    return data.select.findElement(By.css('option[value="'+data.value+'"]'));
  })
  .then((option) => {
    //do something.
  });

答案 3 :(得分:2)

如果你的html中有这个例子

<select name="test" id="myId">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

您可以选择像这样的示例选项3

var driver = new firefox.Driver();
driver.findElement(By.css('#myId>option:nth-child(2)')).click();

适用于我,我正在使用带有JavaScript的selenium-webdriver