Я в настоящее время не понимаю, почему это происходит, но я не удивлюсь, если бы я был в любом случае, или пропустил одну крошечную мелочь.Проблема с функцией самозапуска Javascript (Behat/Mink/Sahi)
Вот мой код:
(function() {
if (jQuery('section.news-feed ul li').text().length > 0) {
var length1 = parseInt(jQuery('section.news-feed ul li').text().length);
var length2 = 0;
setTimeout(function() {
length2 = parseInt(jQuery('section.news-feed ul li').text().length);
if (length1 !== length2) {
return true;
}
else {
return false;
}
}, 3000);
}
else {
return false;
}
})()
Я ищу булевое возвращение, хотя, я получаю 'не определена'. Правильные селектора jQuery верны, и я правильно определяю длину 1 и длину 2.
Для дальнейшего добавить к EnCase вопрос есть кто-то с опытом Behat/норка/Sahi, это то, что я ищу, чтобы сделать:
Behat:
@javascript
Scenario: News ticker is moving
Given I am on the homepage
Then I should see the news ticker "section.news-feed ul li" move
Контекст:
/**
* @Then /^I should see the news ticker "([^"]*)" move$/
*/
public function iShouldSeeTheNewsTickerMove($element) {
$result = $this
->getSession()
->evaluateScript("
(function() {
if (jQuery('" . $element . "').text().length > 0) {
var length1 = parseInt(jQuery('" . $element . "').text().length);
var length2;
setTimeout(function() {
var length2 = parseInt(jQuery('" . $element . "').text().length);
if (length1 !== length2) {
return true;
}
else {
return false;
}
}, 3000);
}
else {
return false;
}
})()
");
echo "Result: " . $result;
if ($result === 'false') {
throw new Exception (
"The newws ticker doesn't seem to be ticking."
);
}
}
Да, 'setTimeout()' возвращает дескриптор таймера, а не возвращаемое значение любой функции, которую он вызывает. –
@roasted aahh Теперь я вижу его проблему. Я опубликовал этот комментарий после проскальзывания кода и подумал, что он хочет, чтобы обработчик (целое число) вернулся к вызывающей стороне else 'false'. –