Получение выпадающих значений с использованием селена и nodejs

У меня есть требование получить все параметры выпадающего списка, и мне нужно перебрать эти значения и отправить форму. Поэтому мне нужен список выпадающих значений.

следующий код в java соответствует моему точному требованию, но мне нужен тот же код в Javascript + selenium + Nodejs

Select select = new Select(driver.findElement(By.name("height")));
List list = select.getOptions();

Можно ли это сделать в nodejs + selenium + javascript

2 ответа

Для тех, кто застрял в этом, понимает, как я это сделал для варианта:

<select id="mySelection">
 <option value="0">Hello</option>
 <option value="1">Everybody</option>
 <option value="2">Got</option>
 <option value="3">It</option>
</select>

В Selenium для NodeJS вы бы захватили "Это":

var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
 withCapabilities(webdriver.Capabilities.chrome()).
 build();
driver.findElement(webdriver.By.id('mySelection')).sendKeys('3');

Когда вы используете .sendKeys() для опции, она должна равняться значению = ''

В вашем случае просто захватите родительский элемент, а затем sendKeys() для дочернего элемента.


Вы можете использовать Cheerio -

module.exports = {
 "login": function (browser) {
 var cheerio = require("cheerio")
 browser
 .url("http://www.wikipedia.org")
 .waitForElementVisible('body', 1000)
 .waitForElementVisible('select#searchLanguage', 1000)
 .source(function(result) { // .source() dump the page source in the variable
 $ = cheerio.load(result.value)
 var num_languages = $('select#searchLanguage option').length
 console.log('Wikipedia.org Languages: ' + num_languages);
 })
 .end();
 }
};

См. этот другой вопрос для этого.

licensed under cc by-sa 3.0 with attribution.