,我嘗試使用driver.wait()在執行某些操作前等待某個元素,並且間歇性地收到以下錯誤消息元素:webdriver/node.js:執行不會等待Internet Explorer 11中的元素
TypeError: Cannot read property 'length' of null
at C:\tools\node_modules\selenium-webdriver\lib\webdriver.js:909:22
at ManagedPromise.invokeCallback_ (C:\tools\node_modules\selenium-webdriver\lib\promise.js:1343:14)
at TaskQueue.execute_ (C:\tools\node_modules\selenium-webdriver\lib\promise.js:2868:14)
at TaskQueue.executeNext_ (C:\tools\node_modules\selenium-webdriver\lib\promise.js:2851:21)
at C:\tools\node_modules\selenium-webdriver\lib\promise.js:2730:27
at C:\tools\node_modules\selenium-webdriver\lib\promise.js:639:7
at process._tickCallback (node.js:369:9)
這是我調用的代碼片段。它在return driver.wait(
線路上失敗。
function wait_for_element_and_click(element){
var target_element;
return driver.wait(
function() { return driver.isElementPresent(element) },
10000
)
.then(function(){ element.click() })
}
這就是我所說的。
function select_and_click_links(){
var make_field = "make_field_id";
var model_field = "model_field_id";
return driver.wait(webdriver.until.elementLocated(webdriver.By.id(make_field)))
.then(function() { wait_for_and_click_element(webdriver.By.id(model_field)) })
}
有趣的是,我沒有它曾經在該行失敗之前(這似乎是在做同樣的事情(即return driver.wait(webdriver.until.elementLocated(webdriver.By.id(make_field)))
)
事情我已經嘗試:
*更換function(){ return driver.isElementPresent(element) }
與webdriver.until.elementLocated(element)
*不包括可選的超時。 *返回wait_and_click_element
調用的結果(是的,在這裏嘗試幾乎任何東西)。
薄gs我還沒有嘗試過:
*一個不同的瀏覽器(因爲該應用程序在IE中正常工作 - 所以,如果這是一個IE怪癖,這對我們來說是一個破壞者)。
該腳本仍然間歇性失敗。