Node.js Selenium Webdriver findElement承诺无法解决
我将SeleniumWebDriver与NodeJS和Chromedriver一起使用。我正在运行一个基本测试:打开一个网页并找到3个元素。最奇怪的事情发生在图像元素上。(我必须单击它,但它总是抛出错误)。当我运行以下代码时:Node.js Selenium Webdriver findElement承诺无法解决,node.js,selenium-webdriver,selenium-chromedriver,Node.js,Selenium Webdriver,Selenium Chromedriver,我将SeleniumWebDriver与NodeJS和Chromedriver一起使用。我正在运行一个基本测试:打开一个网页并找到3个元素。最奇怪的事情发生在图像元素上。(我必须单击它,但它总是抛出错误)。当我运行以下代码时: driver.wait(until.elementLocated(By.css('img.arrow-icon')), 5000); driver.findElement(By.css('img.arrow-icon')).then(function(el){ c
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"}
有可能在里面有一个未解决的承诺吗。然后()
我最初的代码是:
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)
我必须说,webdriver发现页面中还有另外两个元素没有问题。不知怎的,这张照片有点问题。。我不知道。。请帮忙
编辑:
我试过使用
driver.sleep(5000);
…但还是没有成功。我收到“元素不可见”的错误,但图像存在;我可以从一开始就看到它我通过查找by.xpath元素来解决这个问题(不过我必须提到,CSS选择器很好;它使用jQuery工作),我不知道为什么会发生这种情况 我通过查找by.xpath元素来解决这个问题(不过我必须提到,CSS选择器很好;它使用jQuery工作),我不知道为什么会发生这种情况 如果返回driver.findElement()函数会发生什么情况。您需要这样做,以便它将用于el变量。试试这个,它会有用的
driver.wait(直到.elementLocated(By.css('img.arrow icon')),5000);
返回driver.findElement(By.css('img.arrow icon'))。然后返回(function(el){
console.log(“!!!!!!!!!”+el.getTagName());
})
如果返回driver.findElement()函数会发生什么情况。您需要这样做,以便它将用于el变量。试试这个,它会有用的
driver.wait(直到.elementLocated(By.css('img.arrow icon')),5000);
返回driver.findElement(By.css('img.arrow icon'))。然后返回(function(el){
console.log(“!!!!!!!!!”+el.getTagName());
})
您确定您的定位器正确吗?您确定定位器在页面上找不到多个元素,并且第一个元素不可见,而不是您想要的元素吗?此外,如果您计划在找到该元素后单击该元素,请不要等待找到该元素,而是等待该元素可单击。这样,一旦找到它,您就可以立即单击它。元素的位置只是表示它位于DOM中,而不是表示它是可见的或可单击的。确保您的等待与您的操作相匹配(如果可能)。这将使你的测试更加可靠。谢谢你的提示JeffC,我正在验证你说的话你确定你的定位器是正确的吗?您确定定位器在页面上找不到多个元素,并且第一个元素不可见,而不是您想要的元素吗?此外,如果您计划在找到该元素后单击该元素,请不要等待找到该元素,而是等待该元素可单击。这样,一旦找到它,您就可以立即单击它。元素的位置只是表示它位于DOM中,而不是表示它是可见的或可单击的。确保您的等待与您的操作相匹配(如果可能)。这会让你的测试更可靠。谢谢你的提示JeffC,我正在验证你所说的