0

,我嘗試使用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怪癖,這對我們來說是一個破壞者)。

該腳本仍然間歇性失敗。

回答

0

而不是定位嘗試使用isDisplayed以確保該元素在頁面上可見。 webdriver.until.elementLocated可能只是檢查DOM中的元素。

相關問題