我使用Selenium Webdriver与NodeJS和Chromedriver。我正在运行基本测试:打开网页并找到3个元素。最奇怪的事情发生在图像元素上。 (我必须点击它,但它总是抛出错误)。当我运行以下代码时:
driver.wait(until.elementLocated(By.css('img.arrow-icon')), 5000);
driver.findElement(By.css('img.arrow-icon')).then(function(el){
console.log("!!!!!!!!!!! " + el.getTagName());
})
我得到以下结果:
!!!!!!!!!!! ManagedPromise::221 {[[PromiseStatus]]: "pending"}
是否有可能在.then()中有一个未解决的承诺?!?!?
我的初始代码是:
driver.wait(until.elementLocated(By.css('img.arrow-icon')), 5000).click();
总是会抛出这个错误:
ElementNotVisibleError: element not visible
(Session info: chrome=61.0.3163.100)
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 10.0.15063 x86_64)
我必须说网页中还有其他2个元素,webdriver没有问题。不知怎的,它有这个图像的问题..我不知道..请帮忙!
修改 我尝试过使用
driver.sleep(5000);
..仍然没有成功。我收到错误的"元素不可见",但图像在那里;我可以从一开始就看到它
答案 0 :(得分:0)
我设法通过找到元素By.xpath来解决这个问题(我必须提一下,CSS选择器很好;它使用jQuery工作)我不知道为什么会发生这种情况。
答案 1 :(得分:0)
如果返回driver.findElement()函数会发生什么。你需要这样做,因此它将用于el变量。试试这个它应该工作。
driver.wait(until.elementLocated(By.css('img.arrow-icon')), 5000);
return driver.findElement(By.css('img.arrow-icon')).then(function(el){
console.log("!!!!!!!!!!! " + el.getTagName());
})
请记住,您必须返回一个值才能在.then函数中使用。