点击元素还有其他方法吗?

时间:2017-03-28 08:11:38

标签: protractor

我已经尝试过以下代码,但未点击该元素。

    global.elmCBSave.click();
    browser.sleep(2000);
    browser.actions().mouseMove(global.elmCBSave.getWebElement())
        .click(protractor.Button.LEFT).perform();       
    browser.sleep(2000);
    browser.actions().mouseMove(global.elmCBSave.getWebElement())
        .mouseDown().mouseUp()
        .click(protractor.Button.LEFT).perform();       
    browser.sleep(2000);

元素的属性未被标记为按钮,它被标记为跨度,看起来像链接。

    <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是:

global.elmCBSave = element(by.cssContainingText('.x-btn-inner.x-btn-inner-default-small', 'Save'));

注意:使用了cssContainingText,因为“取消”按钮具有相同的css:

<span id="button-1013-btnInnerEl" data-ref="btnInnerEl" unselectable="on" class="x-btn-inner x-btn-inner-default-small">Cancel</span>

我也试过发送TAB键然后按ENTER键,但没有任何反应,它只关注按钮。

1 个答案:

答案 0 :(得分:0)

  

请尝试以下任一操作。希望它可以帮到你。

如您所见,“保存”和“取消”具有相同的值,因此无法使用任何选择器将它们分开。 您可以尝试按如下方式对其进行索引:

browser.findElement(by.xpath("//span[contains(@id,'button')][2]")).click();
browser.findElement(by.xpath("//span[contains(@id,'button')][3]")).click();
  

或浏览文字。

browser.findElement(by.xpath("//span[contains(text(), 'Save')]").click();
browser.findElement(by.xpath("//span[contains(text(), 'Cancel')]").click();

这仍然是使用动态选择。

browser.findElement(by.cssSelector("*[id^='button'][id$='InnerEl']")).click();

Protractor API

了解详情