我正在做一个基于摩卡的测试。 节点v8.2.1 , selenium-webdriver:^ 3.5.0 。
test.it('demoClass', () => {
driver.classes[0].findElement(By.css('.class-avatar')).click();
driver.wait(until.elementIsVisible(driver.findElement(By.css('.anticon.anticon-plus'))));
//driver.sleep(2000);
driver.findElement(By.css('.anticon.anticon-plus')).click();
})
我收到两种不同类型的错误,无论是NoSuchElementError: no such element: Unable to locate element:
还是StaleElementReferenceError: stale element reference: element is not attached to the page document
但无论哪个错误,都是指行:
driver.findElement(By.css()” anticon.anticon加。)点击();
当我使用driver.sleep(2000)
时,它会得到解决。在我看来,这是动画的问题。我只能在当时获得元素(.anticon.ancicon-plus
),页面的动画完成。
我感到困惑的是我使用driver.wait(until.elementIsVisible())
没有错误,显然我得到了元素。但在下一行,我不能使用它。或NoSuchElementError
或StaleElementReferenceError
。
我找到了一些像http://www.seleniumhq.org/exceptions/stale_element_reference.jsp,https://stackoverflow.com/questions/18225997/stale-element-reference-element-is-not-attached-to-the-page-document
这样的答案。但它无法帮助我。
答案 0 :(得分:-1)
使用driver.findElement
时,会触发一些可怕的事情。使用javascript代替它。
driver.executeScript(function() {
while(true) {
if(!document.querySelector('.anticon.anticon-plus')){}
else {
document.querySelector('.anticon.anticon-plus').click();
break;
}
}
return true; // not neccessary
})