selenium js,如何获得一个选中的选项< select>?

vmdwslir  于 2022-11-29  发布在  其他
关注(0)|答案(6)|浏览(145)

有很多关于java和C#的答案,但我找不到如何在javascript中做到这一点。似乎API是不同的...

of1yzvn4

of1yzvn41#

是的,这是可能的。假设我们有下面的select元素:

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

使用getValue可以获取当前选择的选项,使用click可以更改选择。下面是一个简单的示例:

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();

希望能有所帮助。
欢呼声

bd1hkmkf

bd1hkmkf2#

对于那些只寻找纯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');
   }
});
ijnw1ujt

ijnw1ujt3#

如果需要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.
  });
2w3kk1z5

2w3kk1z54#

如果你的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

92vpleto

92vpleto5#

虽然这个问题已经发布了7年,但我还是想分享一下我现在有效的答案。您可以通过以下方式获得所选的选项/值

let select_value =  await driver.findElement(By.css('select')).getAttribute('value')
n6lpvg4x

n6lpvg4x6#

我用这个

element=await driver.findElement(By.name("quantity")); // here you have to select your element suppose i am using get element by name

// below will help you to get selected value from select option
var SelectedValue=element.getAttribute('value').then(function(selected) { return selected;});

相关问题