我有一个下拉框,我想使用WebDriverJS选择一个值。我查看了下面的用户指南,但无法了解如何操作
我甚至尝试过为Java版本记录的一些内容:
webdriver.Select(driver.findElement(webdriver.By.id("vote"))).selectByValue("5")
它只是简单地说“选择”不存在。
我浏览了消息来源但仍无法找到任何我可以使用的内容。
答案 0 :(得分:10)
您无需两次单击即可选择选项,只需直接单击该选项即可。像,
driver.findElement(wd.By.css('#month>option[title=\'November\']')).click();
答案 1 :(得分:8)
我分享了一个功能,可以通过文字here选择一个下拉项目。
代码:
function selectOption(selector, item){
var selectList, desiredOption;
selectList = this.findElement(selector);
selectList.click();
selectList.findElements(protractor.By.tagName('option'))
.then(function findMatchingOption(options){
options.some(function(option){
option.getText().then(function doesOptionMatch(text){
if (item === text){
desiredOption = option;
return true;
}
});
});
})
.then(function clickOption(){
if (desiredOption){
desiredOption.click();
}
});
}
用于:
driver.selectOption = selectOption.bind(driver);
driver.selectOption(webdriver.By.id('my-dropdown'), 'My Value');
答案 2 :(得分:3)
我正在使用webdriverjs并希望按索引选择选项,所以:
driver.click('#my_select_box').click('#my_select_box option:nth-child(3)')
答案 3 :(得分:2)
driver.findElement({id: 'myDropDown'});// select dropdown element you wish to select
driver.sleep(1000);//not necessary
driver.findElement({id: 'myDropDown'}).sendKeys('name_of_option');//sending keys automatically fills dropdown with desired option
答案 4 :(得分:2)
在这种情况下,将键发送到下拉元素就足够了,例如;
driver.findElement(by.id('vote')).sendKeys('5');
当显示文本中有空格时,网络驱动程序需要重点关注,因此只需添加单击功能即可解决该问题;
var ddlElement = driver.findElement(by.id('vote'));
ddlElement.click();
ddlElement.sendKeys('5');
ddlElement.click();
答案 5 :(得分:1)
这应该通过
来实现selectElem = driver.findElement(webdriver.By.id("vote"))
selectElem.click()
selectElem.findElement(webdriver.By.css("option[value='5']")).click()
答案 6 :(得分:0)
driver.click('//*[@id="vote"]/option[3]')
答案 7 :(得分:0)
这对我有用(coffeescript)
selectList.findElements(By.tagName("option")) =
.then (options) ->
len = options.length #getting number of options in the select
driver.wait => #verify all promises finished
for option in options
option.getText()
.then (text) =>
console.log(len)
len -= 1
console.log(text)
if len is 0
true
, 10000
答案 8 :(得分:0)
我在ES6中使用了以下内容:
let select = driver.findElement(By.css("select"));
let options = select.findElements(By.css("option"));
options.then(values => {
return Promise.all(values.map(el => el.getText())).then(optTexts => {
return values[optTexts.indexOf('Some option text')].click();
});
});
答案 9 :(得分:0)
像这样使用xpath
await driver.findElement(By.xpath('//[@id="newEventOffices"]/option[3]')).click();
答案 10 :(得分:0)
找到选择元素并单击以显示下拉列表
driver.findElement(//div//select[@id="elementId"]).click();
然后从选项中选择并单击。我认为按xpath进行选择在这里确实会更好。
driver.findElement(By.xpath('//div//select[@id="elementId"]//option[optionIndex]')).click();
答案 11 :(得分:0)
我遇到同样的问题,上述解决方案在我的TypeScript情况下不起作用
但是我仍然找到解决方案:
await driver.findElement(By.id("ELEMENT_ID")).sendKeys("SOME_VALUE");
由于驱动程序将在获得 selector元素
时返回承诺。因此添加 await 来完成下一件事情
答案 12 :(得分:-1)
以下代码定义了WebDriverJS中的可用选择器:
webdriver.Locator.Strategy = {
'className': webdriver.Locator.factory_('class name'),
'class name': webdriver.Locator.factory_('class name'),
'css': webdriver.Locator.factory_('css selector'),
'id': webdriver.Locator.factory_('id'),
'js': webdriver.Locator.factory_('js'),
'linkText': webdriver.Locator.factory_('link text'),
'link text': webdriver.Locator.factory_('link text'),
'name': webdriver.Locator.factory_('name'),
'partialLinkText': webdriver.Locator.factory_('partial link text'),
'partial link text': webdriver.Locator.factory_('partial link text'),
'tagName': webdriver.Locator.factory_('tag name'),
'tag name': webdriver.Locator.factory_('tag name'),
'xpath': webdriver.Locator.factory_('xpath')
};
goog.exportSymbol('By', webdriver.Locator.Strategy);
来源:https://code.google.com/p/selenium/source/browse/javascript/webdriver/locators.js
答案 13 :(得分:-1)
实际上并没有点击该选项,但事实上它确实选择了它。