Protractor 量角器:如何处理“量角器”;元素在点(x,y)处不可单击,其他元素将收到“单击”;
我想单击以下按钮,定位器:Protractor 量角器:如何处理“量角器”;元素在点(x,y)处不可单击,其他元素将收到“单击”;,protractor,selenium-chromedriver,Protractor,Selenium Chromedriver,我想单击以下按钮,定位器: cssdiv.d-flex>[\u ngcontent-c1]>。导航栏切换器 和Xpath//div[@class='container d-flex在']/span[1]/a[1] 我还使用命令更新了chrome驱动程序:webdriver manager update 然后,我有:chromedriver_79.0.3945.36版 geckodriver v0.26.0版 Chome版本79.0.3945.88 当我运行量角器时,我得到了错误: 失败:元素单击
css
div.d-flex>[\u ngcontent-c1]>。导航栏切换器
和Xpath
//div[@class='container d-flex在']/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参考/分支机构负责人/3945@{262}),平台=窗口 新界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();
})
原始代码(无等待)为然后,我得到了这个错误: 失败:元素单击被拦截:元素。。。在点(137,23)处不可单击。其他 元素将收到单击:。。。 (会话信息:chrome=79.0.3945.88) (驱动程序信息:chromedriver=79.0.3945.16(93fcc21110c10dbbd49bbff8f472335360e31d05参考/分支机构负责人/3945@{262}),平台=窗口 NT 10.0.18362 x86_64)
有趣的是,点击这个按钮可以在页面的其他部分工作。这个错误与chrome版本无关。问题是您尝试单击的元素上面有另一个元素。这在视觉上可能看起来不像它,但可以有一个容器或一个web元素位于该元素之上。查看是否可以找到将接收单击的元素。您可以在错误日志中找到它。查看单击该元素是否会得到与所需相同的结果 此错误与chrome版本无关。问题是您尝试单击的元素上面有另一个元素。这在视觉上可能看起来不像它,但可以有一个容器或一个web元素位于该元素之上。查看是否可以找到将接收单击的元素。您可以在错误日志中找到它。查看单击该元素是否会得到与所需相同的结果 使用javascript executor单击元素:
browser.executeScript('arguments[0].click();', elem);
单击使用javascript executor的元素:
browser.executeScript('arguments[0].click();', elem);
您好@Sankalan,谢谢您的支持,我在点击按钮之前添加了sleep(),它正在工作fine@IngriddBrito您应该将代码改为使用async await,这样就可以完全不用browser.sleep()。您可以查看如何操作Hi@Sankalan,感谢您的支持,我在单击按钮之前添加了sleep(),它正在工作fine@IngriddBrito您应该将代码改为使用async await,这样就可以完全不用browser.sleep()。你可以检查一下怎么做