量角器:如何处理“元素在(x,y)点不可点击,其他元素会收到点击”

时间:2019-12-23 10:37:01

标签: protractor selenium-chromedriver

我想单击以下按钮,定位器:
css div.d-flex > [_ngcontent-c1] > .navbar-toggler
和Xpath //div[@class='container d-flex justify-content-between']/span[1]/a[1]

我还使用以下命令更新了chrome驱动程序:webdriver-manager update
然后,我有:chromedriver_79.0.3945.36版本
geckodriver版本v0.26.0
Chome版本79.0.3945.88

运行量角器时,出现错误:

  

失败:元素单击被拦截:元素...在点(1157,20)不可单击。其他   元素将获得点击:...         (会议信息:chrome = 79.0.3945.88)         (驱动程序信息:chromedriver = 79.0.3945.16(93fcc21110c10dbbd49bbff8f472335360e31d05-refs / branch-heads / 3945 @ {#262})),平台= Windows   NT 10.0.18362 x86_64)

这是我尝试的代码:

it('should return to the main menu', function () {
        browser.driver.manage().window().setSize(1284, 684);
        var until = protractor.ExpectedConditions;
        var EC = protractor.ExpectedConditions;
        var elem = element(by.css('span:nth-of-type(2)>span>a>svg'));

        browser.driver.wait(function () {
            browser.wait(EC.visibilityOf(elem), 10000);
            return elem;
        });

    elem.click();

})

原始代码(无需等待)是

    it('should return to the main menu', function () {
      element(by.css('.fa-chevron-left')).click();                                                   
   });

然后,我收到此错误:

  

失败:元素单击被拦截:元素...在点(137,23)处不可单击。其他   元素将获得点击:...         (会议信息:chrome = 79.0.3945.88)         (驱动程序信息:chromedriver = 79.0.3945.16(93fcc21110c10dbbd49bbff8f472335360e31d05-refs / branch-heads / 3945 @ {#262})),平台= Windows   NT 10.0.18362 x86_64)

有趣的是,单击此按钮在页面的其他部分也起作用。

2 个答案:

答案 0 :(得分:3)

此错误与Chrome版本无关。问题在于您要单击的元素上方有另一个元素。在外观上可能看起来不像它,但是在该元素上方可能有一个容器或一个Web元素。查看您是否可以找到哪个元素将获得点击。您可能可以在错误日志中找到它。看看单击该元素是否会给您所需的结果。

答案 1 :(得分:1)

使用javascript执行程序单击元素:

browser.executeScript('arguments[0].click();', elem);