我必须在弹出窗口中选择一个元素,但实际上它是 Accordion 。我使用以下方法,这是有效的:
var accordion = element(by.id('promoAccordion'));
var promoChannels = element.all(by.repeater('channelCreatives in creativesByChannel'));
var firstPromoChannel = element.all(by.repeater('channelCreatives in creativesByChannel')).first();
稍后:
this.activatePromotions = function() {
expect((accordion).isPresent()).toBe(true);
expect(promoChannels.count()).toBeGreaterThan(1);
firstPromoChannel.click();
现在,我需要向下滚动到“发送更改”按钮并单击它。这个按钮定义为
var sendChangesButton = element(by.buttonText('Send Changes'));
问题是,一旦我点击 firstPromoChannel,就会出现第二个垂直滚动条(因为 Accordion 中的内容不适合页面)。当我在努力的时候
expect((accordion).isPresent()).toBe(true);
browser.executeScript('window.scrollBy(0,450);');
它实际上向下滚动了原始窗口,这并不能帮助我看到按钮。无法通过 browser.switchTo();
或 browser.selectWindow();
进行切换,因为这是 Accordion 而不是新窗口。
我怎样才能在 Accordion 中向下滚动以使按钮可见?
最佳答案
你也可以使用
browser.executeScript('arguments[0].scrollIntoView(true);', sendChangesButton.getWebElement());
关于javascript - Protractor 和棘手的 Accordion ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37953252/