Так что я использую реализацию JavaScript Selenium, WebDriverJS. Как и при любой автоматизации веб-браузера, самым большим препятствием является то, что код замедляется достаточно долго, чтобы загружать элементы страницы. Мое решение заключается в следующем:Как поймать Selenium Errors с помощью WebDriverJS
для каждого элемента Я хочу, чтобы взаимодействовать с У меня есть блок кода, как этот
xpath = "//div[@id='gs_lc0']/input[@id='gbqfq']"
driver.wait(function(){
return waitForElement(xPath,driver);
});
try{
element = driver.findElement(webdriver.By.xpath(xPath));
}catch(e){
console.log("Wait Function False Positive")
}
element.sendKeys("Let Me Google That For You\n";
с этим воспроизведенной функцией в функции ожидания
var waitForElement = function(path, driver){
console.log("try: " + path)
try{
driver.findElement(webdriver.By.xpath(path));
}catch (e){
console.log("FAILURE")
return false;
}
console.log("SUCCESS")
return true;
}
теперь это код будет работать иногда, но в других случаях это не будет. Я полагаю, что функция wait не работает вообще, и мне просто повезло время загрузки веб-страницы. Поэтому, чтобы проверить эту теорию, я добавил функцию try к блоку кода, который я даже не могу получить, чтобы поймать «NoSuchElementError». Поэтому основной вопрос моего вопроса заключается в том, есть ли другой способ сформировать функцию tryCatch, чтобы эти ошибки были пойманы.
Также здесь как выглядит голова моего кода, как если нужен полное воспроизводство
var webdriver = require('selenium-webdriver'), element
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('google.com');
Благодарим вас за ответ. Решение по обработке ошибок было именно тем, что мне нужно. – Arcv2
Какова цель null в инструкции then? – Arcv2
Первым аргументом 'then' обычно является обратный вызов, который вызывается, если обещание успешно разрешается. Поскольку демонстрация выше не может быть успешной, нет никакого смысла в обратном вызове. Поэтому используется «null». Он будет работать так же, как и с функцией function() {} '. – Louis