元素在点(1254,21)处不可点击。其他元素将收到点击

时间:2014-11-15 06:07:36

标签: javascript angularjs node.js selenium-webdriver protractor

我正在使用带有angularJS的量角器和selenium服务器进行UI测试,

这是我的TestCase:

it('Click on Top Headings one by one', function () {        
    //click on Top Heading one by one
    ptor.element.all(by.repeater('application in workbenchOptions.applications')).then(function (arrs) {
        ptor.sleep(3000);
        arrs[2].click();
        ptor.sleep(3000);
        arrs[3].click();
        ptor.sleep(3000);
        arrs[1].click();
        ptor.sleep(3000);
        arrs[2].click();
        ptor.sleep(3000);
        arrs[0].click();
        ptor.sleep(2000);
    });
});

这是我的UI,我试图逐个点击每个标题

http://i.stack.imgur.com/zVE9K.png

首先,我点击了arrs[2],即Clientside测试用例

http://i.stack.imgur.com/YRE2s.png

然后我点击arrs[3]arrs[1]arrs[2]arrs[0],一切都在点击,但如果在开始时假设arrs[0]已经打开然后我再也无法点击这个,我收到了一条错误信息

UnknownError: unknown error: Element is not clickable at point (1254, 21). 
Other element would receive the click: 
<div class="slider-wrapper pl-pageslide-wrapper" style="transition: width 0.3s, height; -webkit-transition: width 0.3s, height; z-index: 1000; position: fixed; left: 0px; top: 0px; bottom: 0px; right: 0px; width: auto; background: rgba(0, 0, 0, 0.498039);">...</div>

我针对Chrome和Firefox进行了测试,发生了同样的错误

2 个答案:

答案 0 :(得分:2)

我对没有固定位置的元素有类似的问题。我在量角器中使用了以下代码:

var el = ...; // some protractor element
el.getLocation().then(function(location) {
  browser.executeScript("window.scrollTo(0," + (location.y - 70)+ ")");
  el.click();
});

注意:我还使用-70px的偏移量,因为页面的页面顶部有一个固定的菜单。如果没有偏移,元素将在菜单后面滚动,并且会再次显示消息“元素不可点击...”。

答案 1 :(得分:1)

我认为这对你有帮助:

ptor.executeScript('window.scrollTo(1254,21);').then(function() {
        element(by.<<here your button locator>>).click();
    })

您的webdriver无法读取该点(1254,21),原因是您的量角器浏览器无法覆盖整个页面您要测试的内容,然后我们给出一个浏览器滚动到该点的命令( 1254,21),然后执行点击操作