我有以下HTML结构:
<button class="dropdown-toggle selectpicker btn btn-primary" data-toggle="dropdown" type="button" data-id="strategic_reseller_country" title="United States">
<div class="dropdown-menu open" style="max-height: 245.6px; overflow: hidden; min-height: 40px;">
<ul class="dropdown-menu inner selectpicker" role="menu" style="max-height: 243.6px; overflow-y: auto; min-height: 38px;">
<li class="" rel="0">
<a class="" style="" tabindex="0">
<span class="text"/>
<i class="glyphicon glyphicon-ok icon-ok check-mark"/>
</a>
</li>
<li rel="1">
<a class="" style="" tabindex="0">
<span class="text">Andorra</span>
<i class="glyphicon glyphicon-ok icon-ok check-mark"/>
</a>
</li>
<li rel="2">
<a class="" style="" tabindex="0">
<span class="text">United Arab Emirates</span>
<i class="glyphicon glyphicon-ok icon-ok check-mark"/>
</a>
</li>
<li rel="3">
<a class="" style="" tabindex="0">
<span class="text">Afghanistan</span>
<i class="glyphicon glyphicon-ok icon-ok check-mark"/>
</a>
</li>
<li rel="4">
<li rel="5">
<li rel="6">
<li rel="7">
<li rel="8">
<li rel="9">
<a class="" style="" tabindex="0">
<span class="text">Netherlands Antilles</span>
<i class="glyphicon glyphicon-ok icon-ok check-mark"/>
</a>
</li>
</ul>
</div>
所以我怎样才能从列表中获取该项目..
我是Node.Js(JavaScript)的新手,所以我不知道如何在node.Js中实现它,但它可以在java中实现如下:
选择dropdown = new Select(driver.findElement(By.class(&#34; dropdown-menu inner selectpicker&#34;))); dropdown.selectByVisibleText(&#34;安道尔&#34);
答案 0 :(得分:8)
只需点击所需的选项。
driver.findElement(webdriver.By.css('#mySelection > option:nth-child(4)'))
.click();
请注意,我已将'By'更改为css选择器。我很懒,只想从开发人员工具中选择复制CSS路径(chrome)或复制唯一选择器(firefox)。
答案 1 :(得分:2)
您可以创建一个选择所需值的功能
像这样......fn(42, 3.1415)
答案 2 :(得分:1)
我会使用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();
}
};
或仅使用.execute()
命令
答案 3 :(得分:0)
对于任何坚持这一点的人来说,我是如何选择的:
<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 for 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()。