私はテストベースのモカをやっています。 ノードv8.2.1、セレン - webdriver:^ 3.5.0。nodejs + selenium-driver NoSuchElementError&StaleElementReferenceError
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-plus '))。クリック();
私が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
のような回答があります。しかし、それは私を助けることはできません。
この回答とコードは意味がありません。 – JeffC
本当に助けてくれます。セレンのwebdriverが何をするのか分かりませんが、javascriptによるこのメソッドは有効です。私はひどい誤りなくそれを実行します。 [フレークを固定する](https://github.com/tastejs/todomvc/pull/1371)、角度のようなフレームを使用すると、反応するかもしれません。何かをしたり、ページが読み込まれます。当時、selenium-webdriverはエラーを表示します。しかし、javascriptはまだ有用です。 @JeffC – yuwanlin
ありがとう、それは実際にprobleを解決する。@ yuwanlin – real