我有一个非角度的应用程序,我单击一个链接,然后出现一个新的弹出模式。然后我可以选择上传图片或视频。我告诉量角器和/或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文件中只有一个元素,不知道那些是什么。
答案 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();