Нажатие кнопки ничего не делает в хроме

avatar
janobody
8 августа 2021 в 22:17
85
1
3

Я задал этот вопрос и получил одну полезную информацию от Кельвина Шофса о том, что querySelect был лучшим подходом к выбору, поэтому я реализовал его.

var bc = document.querySelectorAll('button.link.event-detail__event-information__event-name-status__grouped-match');
for (var b of bc){
        if(b.ariaExpanded=="false"){
            b.click();
        }
}

Однако, выбор не является моей проблемой и никто не отвечает на вопрос, который я пытаюсь задать. Итак, позвольте мне попробовать это в картинках.

Img1 показывает эту страницу с набором шевронов, указывающих вверх, чтобы указать, что эти строки могут быть расширены с дополнительной информацией, а также отметить границу между строками. Img2 показывает инициацию первого из 53 событий щелчка, которые я хочу инициировать. Img3 показывает результаты скрипта. Обратите внимание, что все шевроны теперь направлены вверх, указывая на то, что строка была расширена, а граница между строками устранена, но больше ничего. Img4 показывает пример информации, которая должна была появиться и появляется при физическом нажатии.

Я вошел в код сайта, насколько смог. Я подтвердил, что он идентифицирует правильный элемент и кнопку и собирает правильные данные (вид спорта, дату и т. д.) для извлечения информации, но она никогда не вставляется на страницу. Один фрагмент кода заставил меня задуматься, не создавали ли эти клики последовательную очередь, как я ожидал, и что быстрое выполнение такого количества могло означать, что каждый из них отменял предыдущий. Но когда я выполнил щелчок только для одной строки, поведение было таким же (шеврон переворачивается и граница исчезает, но нет данных).

Когда я пытался работать с кодом сайта, там была подпрограмма (ft(e) и Un(), если кто-то на самом деле собирается посмотреть), где собираются различные физические данные мыши (клиент/экранX/Y, состояния клавиш , и т.д.). Итак, я попытаюсь в последний раз задать вопрос, который постоянно задаю. Есть ли что-то, что отличает клик сценария от физического? Если да, то есть ли обходной путь?

Я почти не могу пользоваться руками, и мне очень помогает автоматизация взаимодействия с веб-страницами. Это всегда было легко с VB6/IE. Но, конечно, это больше не работает со многими веб-сайтами HTML5. Поэтому я пытаюсь изучить JavaScript, но я не хочу тратить свое время, если такая автоматизация больше невозможна.

Я был бы очень признателен за помощь.

Источник
evolutionxbox
8 августа 2021 в 22:18
0

Он действительно выполняет щелчок? Можете ли вы попробовать поместить журнал консоли в оператор if?

Guerric P
8 августа 2021 в 22:20
1

В приведенном вами примере нет кнопки, соответствующей вашим условиям на className

janobody
8 августа 2021 в 22:44
0

при нажатии вручную изображение кнопки переворачивается вверх дном (чтобы указать, что щелчок будет сокращаться), и область расширяется за счет дополнительных элементов. Щелчок по фрагменту просто приводит к тому, что изображение переворачивается, но никаких дополнительных элементов не появляется. Я не понимаю, почему «программный щелчок» будет вести себя иначе, чем ручной.

janobody
8 августа 2021 в 22:47
0

когда я показываю эту страницу, есть соответствующие кнопки (50 с чем-то), и эта графика переворачивается при выполнении кода.

secan
11 августа 2021 в 15:48
0

Я думаю, вы можете найти полезную информацию здесь (ванильный JavaScript), здесь (jQuery), здесь (снова jQuery)

janobody
11 августа 2021 в 16:10
0

Это потенциально очень полезно, но почему, когда я ищу «различный физический клик по скрипту», ни один из них не отображается в результатах?

janobody
11 августа 2021 в 16:29
0

И как мне отдать должное человеку, который указал мне на ответ?

secan
11 августа 2021 в 17:04
0

Я не знаю, почему эти ссылки не появились в результатах поиска; Я нашел их с помощью исследования Google для «javascript различает событие физического клика и программный клик ». В любом случае, главное, что теперь у вас есть важная информация, которую вы можете использовать. Вы можете отдать должное ребятам, которые написали полезные ответы, нажав на стрелку/треугольник над подсчетом голосов в верхнем левом углу каждого ответа. Вместо этого, если вы имели в виду меня, не нужно отдавать должное; Я просто указал вам на ответы других людей.

Ответы (1)

avatar
Kelvin Schoofs
8 августа 2021 в 22:23
1

Для меня className для нужных вам кнопок имел другой класс, что объясняет, почему .className=="... не удалось.

Вы можете использовать селектор CSS для идентификации кнопки, используя некоторые классы:

document.querySelectorAll('button.link.event-detail__event-information__event-name-status__grouped-match')

Это означает, что ваш код устойчив к внезапному добавлению новых классов (или использованию другого порядка). Например, для меня он добавил класс link--using-mouse.

janobody
8 августа 2021 в 23:08
0

Как я уже сказал, у меня ограниченные навыки, поэтому я не знаю, почему на моем компьютере 54 кнопки выбираются этим className и нажимаются кодом. У меня есть основная идея того, что вы говорите, может произойти во время генерации страницы. По крайней мере на моем компе у меня нет проблемы выбора. Удалось ли вам найти и нажать кнопки с помощью скрипта, и они расширялись и заполнялись? Это разница в поведении, которую я пытаюсь решить/понять.

janobody
9 августа 2021 в 00:17
0

document.querySelectorAll('button.link.event-detail__event-information__event-name-status__grouped-match').length = 0 Опять же, я ценю ответ, но можете ли вы поделиться рабочим кодом, из которого я могу извлечь уроки?