Я наблюдаю странное поведение при использовании ExecuteScript в кодированном интерфейсе.Когда два числа находятся рядом друг с другом, count не возвращает правильное значение.Я не уверен, почему это происходит.Вот фрагмент кода:
static long nowYearQA = 2030;
static long pastYearQA = 2029;
BrowserWindow window = new BrowserWindow();
window.WaitForControlEnabled();
long countCurrentYearQA = (long)window.ExecuteScript("count = 0; if(document.body.innerHTML.toString().indexOf('" + nowYearQA.ToString().Trim() + "') > -1){count = 1;} return count;");
long countPastYearQA = (long)window.ExecuteScript("count = 0; if(document.body.innerHTML.toString().indexOf('" + pastYearQA.ToString().Trim() + "') > -1){count = 1;} return count;");
MessageBox.Show(countCurrentYearQA + " " + countPastYearQA);
Это для проверки страницы, где я проверяю, присутствует ли определенное число во внутреннем тексте страницы.Если число представлено, то оно возвращает 1, а если число не существует, то оно возвращает 0. Код ExecutionScript был принят из следующего обсуждения: https://forums.asp.net/t/1945825.aspx?javascript+check+if+a+string+exists+on+page
Для внутреннего веб-сайта, на котором я его тестировал, счетчик возвращает правильныйзначение, если разница между числами составляет не менее 2, но возвращается неверно, если разница больше 2.
Для теста, который я использовал https://www.google.com - для этого сайта разница между числом должна быть3, чтобы получить правильное значение.Например, если nowYearQA = 2030 и pastYearQA = 2029 или pastYearQA = 2028, то countCurrentYearQA получает 0, а countPastYearQA получает 1 - это неверный результат.
Когда nowYearQA = 2030 и pastYearQA = 2027, то countCurrentYearQA получает 0и countPastYearQA получает 0 - это правильный результат.
Есть что-то, что я здесь пропускаю?Почему эта разница?Из этого сообщения я понимаю, что «API-интерфейс ExecuteScript не поддерживает Int, а поддерживает только long» - вот почему я долго приводил переменные в фрагменте кода.