Selenium Webdriver findElement承诺无法解析

时间:2017-11-06 15:22:58

标签: node.js selenium-webdriver selenium-chromedriver

我使用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);

..仍然没有成功。我收到错误的"元素不可见",但图像在那里;我可以从一开始就看到它

2 个答案:

答案 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函数中使用。