元素在点(215,251)错误时无法点击

时间:2015-09-15 14:43:42

标签: angularjs selenium-webdriver protractor selenium-chromedriver

我有一个非角度的应用程序,我单击一个链接,然后出现一个新的弹出模式。然后我可以选择上传图片或视频。我告诉量角器和/或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();

这也没有结果。

另外,我收到此警告:

  

警告 - 找到定位器By.cssSelector("#px-select-photo")的多个元素 - 将使用第一个结果

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

2 个答案:

答案 0 :(得分:1)

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

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

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();

答案 1 :(得分:1)

请尝试以下代码: -

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