点击每个第一个儿童电台(未定义的孩子长度)

时间:2017-06-14 08:24:06

标签: javascript promise intern leadfoot

我想点击 class =“cf”的每个第一个孩子,并且应该按顺序,首先 cf ,因为除非您点击第一。 cf 长度未确定(在此示例中我放3)所以我需要先得到 ol>的孩子的长度li 并在那里循环点击。

这是HTML

的结构
<div id="group-attr-selects" class="grouped-select">
<ol>
    <li class="opt-label">Dimensions</li>
    <div id="conf-container-1549" class="cf">
        <div class="optdiv">
            <input name="conf-radio-0" id="conf-radio-1461" type="radio" value="1461">
            <label class="optdiv-label" for="conf-radio-1461">3" H x 3" W</label>
        </div>
        <div class="optdiv">
            <input name="conf-radio-0" id="conf-radio-1421" type="radio" value="1421">
            <label class="optdiv-label" for="conf-radio-1421">4" H x 4" W</label>
        </div>
    </div>

    <div id="err-attribute1549" style="color: red; margin-bottom: 5px"></div>

    <li class="opt-label">Color</li>
    <div id="conf-container-1379" class="cf">
        <div class="optdiv">
            <input name="conf-radio-1" id="conf-radio-12791" type="radio" value="12791">
            <label class="optdiv-label" for="conf-radio-12791">Black on Almond</label>
        </div>
        <div class="optdiv">
            <input name="conf-radio-1" id="conf-radio-12796" type="radio" value="12796">
            <label class="optdiv-label" for="conf-radio-12796">Black on Brushed Aluminum</label>
        </div>
        <div class="optdiv">
            <input name="conf-radio-1" id="conf-radio-12798" type="radio" value="12798">
            <label class="optdiv-label" for="conf-radio-12798">Black on Brushed Brass</label>
        </div>
        <div class="optdiv">
            <input name="conf-radio-1" id="conf-radio-12794" type="radio" value="12794">
            <label class="optdiv-label" for="conf-radio-12794">Black on Brushed Gold</label>
        </div>
    </div>

    <div id="err-attribute1379" style="color: red; margin-bottom: 5px"></div>

    <li class="opt-label">Mounting Type</li>
    <div id="conf-container-2605" class="cf">
        <div class="optdiv">
            <input name="conf-radio-2" id="conf-radio-76" type="radio" value="76">
            <label class="optdiv-label" for="conf-radio-76">Adhesive</label>
        </div>
        <div class="optdiv">
            <input name="conf-radio-2" id="conf-radio-762" type="radio" value="762">
            <label class="optdiv-label" for="conf-radio-762">No Mounting</label>
        </div>
    </div>
    <div id="err-attribute2605" style="color: red; margin-bottom: 5px"></div>
</ol>

2 个答案:

答案 0 :(得分:0)

这应该有效:
jQuery的:

  $('.cf').each(function(i, item){$(item).find('input[type="radio"]')[0].click()})

JS:

Array.from(document.getElementsByClassName('cf')).forEach(function(item){item.querySelector('input[type="radio"]').checked = true})

答案 1 :(得分:0)

man page获得解决方案

我做了一些调整。

                .findAllByCssSelector('#group-attr-selects > ol > div.cf')
                    .then(function (elementArray) {
                        return Promise.all(elementArray.map(function (element) {
                            return element.getVisibleText()
                                .then(function (children) {
                                    for(var i=0; i < children.length; i++){
                                        return element.findByCssSelector('.optdiv > input')
                                            .then(function (inp) {
                                                return inp.click();
                                            });
                                    }
                                });
                        }));
                    })