如何单击页面中间的按钮

时间:2015-10-08 07:58:13

标签: javascript angularjs selenium-webdriver jasmine protractor

HTML代码



<a href="" ng-click="select()" tab-heading-transclude="" class="ng-binding">RESUME</a>
&#13;
&#13;
&#13;

问题: 点击我们的应用程序中的链接后,页面将在新选项卡中打开。在新页面中,我必须单击“简历”选项卡(它位于页面中间)。

我必须向下滚动并点击该标签,但无法点击。

我的代码:

browser.executeScript('window.scrollTo(0,250);');
element(by.partialLinkText("RESUME")).click(); 

请帮帮我

2 个答案:

答案 0 :(得分:5)

在尝试单击元素之前切换到新选项卡。稍后,使用量角器中的ExpectedConditions实例和elementToBeClickable()函数等待元素存在并处于可单击状态。一旦处于可点击状态,然后执行click()操作。但是,量角器中的click()函数应自动滚动页面而无需滚动。这是怎样的 -

browser.getAllWindowHandles().then(function(handles){
    browser.switchTo().window(handles[1]).then(function(){
        var elem = element(by.partialLinkText("RESUME"));
        browser.wait(protractor.ExpectedConditions.elementToBeClickable(elem), 10000)
        .then(function(){
            elem.click();
        });
    });
});

如果上面的代码仍然没有点击,那么在点击之前添加滚动行,然后解决函数返回的承诺。这是怎样的 -

var elem = element(by.partialLinkText("RESUME"));
browser.wait(protractor.ExpectedConditions.elementToBeClickable(elem), 10000)
.then(function(){
    elem.getLocation().then(function(loc){
        browser.executeScript('window.scrollTo('+loc.x+','+loc.y+');').then(function(){
            elem.click();
        });
    });
});

希望它有所帮助。

答案 1 :(得分:2)

“点击我们的应用程序中的链接后,页面将在新标签中打开”.... 浏览器的新标签? 首先切换到新选项卡。然后单击该按钮。 尝试使用browser.getWindowHandles()。它会给你一套。