в Internet Explorer 11, я пытаюсь использовать driver.wait(), чтобы дождаться элемента, прежде чем что-то делать с ним, и я получаю следующую ошибку с перерывами, для разных элементы:webdriver/node.js: выполнение не будет ждать элемента
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
вызова (да, пытаясь почти все здесь).
Thin gs Я не пробовал:
* другой браузер (так как приложение работает правильно в IE - так что, если это IE quirk, это для нас разбойник).
Сценарий все еще не срабатывает с перерывами.