在自动化过程中无法单击按钮

时间:2017-05-03 13:11:55

标签: protractor

我正在尝试单击显示/可见/存在的按钮。

手动操作时,用户可以点击按钮 如果测试已执行,您会注意到它正在尝试单击按钮,但没有任何事情发生。

我也尝试过很长时间的等待,并尝试在自动化过程中手动点击它 但是,点击它时,也没有任何事情发生。

我无法共享该网站,因为它位于代理中。

这是按钮的HTML,看起来很正常:

<a class="x-btn x-unselectable x-box-item x-toolbar-item x-btn-default-small" style="min-width: 75px; right: auto; left: 328px; top: 0px; margin: 0px;" hidefocus="on" unselectable="on" role="button" aria-hidden="false" aria-disabled="false" id="button-1011" tabindex="-1" data-componentid="button-1011">
    <span id="button-1011-btnWrap" data-ref="btnWrap" role="presentation" unselectable="on" style="" class="x-btn-wrap x-btn-wrap-default-small ">
        <span id="button-1011-btnEl" data-ref="btnEl" role="presentation" unselectable="on" style="" class="x-btn-button x-btn-button-default-small x-btn-text    x-btn-button-center ">
            <span id="button-1011-btnIconEl" data-ref="btnIconEl" role="presentation" unselectable="on" class="x-btn-icon-el x-btn-icon-el-default-small  " style=""></span>
            <span id="button-1011-btnInnerEl" data-ref="btnInnerEl" unselectable="on" class="x-btn-inner x-btn-inner-default-small">Save</span>
        </span>
    </span>
</a>

代码:

global.elmCBSave = element.all(by.cssContainingText('span', 'Save')).last();

it('should click the Save button.', function() {
    global.elmCBSave.click();
});

我也尝试过使用browser.executeSrcipt,这在通过控制台执行时有效:

browser.executeScript('$(".x-btn-inner.x-btn-inner-default-small:eq(3)").click()')

1 个答案:

答案 0 :(得分:0)

您可以尝试一些事项。

请务必将done传递给您的回调并处理点击事件

中返回的承诺
it('should click the Save button.', function(done) {
    global.elmCBSave.click().then(function(){
        done();
    });
}); 

此外,我倾向于设置一个预期的条件来等待元素可点击:http://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.elementToBeClickable

var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be clickable.

it('should click the Save button.', function(done) {
    browser.wait(EC.elementToBeClickable($('#abc')), 5000).then(function(){
        global.elmCBSave.click().then(function(){
            done();
        });
    });
});