JS getElementByXPath и .click () не имеют никакого эффекта - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть проект, где я удаляю веб-сайт, который загружает данные, когда пользователь нажимает на элемент. В интересной области есть два столбца, в которых пользователь должен щелкнуть правой колонкой, чтобы страница активировала XHR, который загружает данные (элементы списка), а затем щелкните элемент списка, чтобы загрузить нужные данные через другой XHR.

Для очистки данных я использую Selenium с Python. Поскольку Selenium позволяет мне выполнять JS, я открыл Dev Tools в Firefox, выбрал div, выполнил .click () и надеялся, что данные загружаются.

function getElementByXpath(path) {
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
getElementByXpath("//*[@id='__xmlview3--ImpInfoTab-text']").click()

Но нет. В точках останова прослушивателя событий я выбрал событие mouseclick и все XHR, чтобы увидеть, загружается ли что-нибудь. Я видел 3 события клика (одно - Adblock, два других - из JS файлов со страницы). Но не было XHR.

09:25:25.128    click { target: div#__xmlview3--ImpInfoTab-text.sapMITBText, buttons: 0, clientX: 0, clientY: 0, layerX: 0, layerY: 0 } include.postload.js:101:2
09:25:25.134    click { target: div#__xmlview3--ImpInfoTab-text.sapMITBText, buttons: 0, clientX: 0, clientY: 0, layerX: 0, layerY: 0 } sap-ui-core.js:1766:10541
09:25:25.137    click { target: div#__xmlview3--ImpInfoTab-text.sapMITBText, buttons: 0, clientX: 0, clientY: 0, layerX: 0, layerY: 0 } sap-ui-core.js:126:36437

Второй вызов к селектору jQuery Sizzle CSS, третий к CSS функции проверки типа / запроса носителя.

Как мне подделать пользователь щелкает элемент, в который загружаются данные?

Если вы хотите попробовать: SAP Fiori Apps Library (нажмите IMPLEMENTATION INFORMATION, а затем Configuration). Если у вас активированы точки останова мыши и XHR, вы увидите 4 события щелчка, несколько записей XHR POST и много записей readystatechange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...