元素在点 (215, 251) 错误处不可点击

Element is Not clickable at point(215, 251) error

我有一个非 angular 应用程序,我在其中单击 link 并出现一个新的弹出模式。然后我可以 select 上传图片或视频。我告诉量角器 and/or webdriver 点击上传照片按钮。

如果我使用:

var addPhotos = element(by.css('#px-select-photo')).click();

我可以直观地看到按钮被按下,但是测试失败并且错误无法点击...(215, 251)

然后我想我可以欺骗它点击 x y 位置(我假设错误中的那两个数字是)但我什么也没得到

我使用的代码是:

browser.actions().mouseMove({
  x: 702,
  y: 621
}).click().perform();

它点击了,但不是在按钮上。

最后我试了这个:

var addPhotos = element(by.css('#px-select-photo'));
browser.executeScript('arguments[0].scrollIntoView()', addPhotos.getWebElement());
browser.actions().mouseMove(addPhotos).click().perform();

同样没有结果。

此外,我收到此警告:

WARNING - more than one element found for locator By.cssSelector("#px-select-photo") - the first result will be used

然而,html文件中只有一个元素,也不知道那是什么。

警告可能是解决问题的关键。

使您的选择器更具体等待上传按钮变得可点击:

var EC = protractor.ExpectedConditions;
var addPhotos = element(by.css('#pxupload3 input#px-select-photo'));

browser.wait(EC.elementToBeClickable(addPhotos), 5000);
addPhotos.click();

另一种选择是通过 px-select-photo id 和过滤器可见获取所有元素:

var addPhotos = element.all(by.css("#px-select-photo")).filter(function (addButton) {
    return addButton.isDisplayed();
}).first();
addPhotos.click();

请尝试以下代码:-

browser.executeScript('arguments[0].click()', addPhotos.getWebElement()); 
browser.actions().mouseMove(addPhotos).click().perform();