量角器和棘手的手风琴

时间:2016-06-21 19:42:47

标签: javascript css testing protractor

我必须选择一个看似弹出窗口的元素,但实际上它是一个手风琴。我使用以下方法,这是正常的:

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,就会出现第二个垂直滚动条(因为手风琴中的内容不适合页面)。当我在尝试时

expect((accordion).isPresent()).toBe(true);

browser.executeScript('window.scrollBy(0,450);');

它实际上向下滚动原始窗口,这对我来说不能帮助我查看按钮。没有办法通过browser.switchTo();browser.selectWindow();进行切换,因为这是手风琴而不是新窗口。

我怎么能在这个手风琴中向下滚动才能看到按钮?

2 个答案:

答案 0 :(得分:0)

我认为您可以按照以下方式执行此操作;

var sendChangesButton = element(by.buttonText('Send Changes'));

browser.executeScript('arguments[0].scrollTop(450);', sendChangesButton.getWebElement());

然后这个按钮可以通过量角器点击。

答案 1 :(得分:0)

您也可以使用

browser.executeScript('arguments[0].scrollIntoView(true);', sendChangesButton.getWebElement());