Nano Hash - криптовалюты, майнинг, программирование

Кукловод, проблема с выполнением события для элемента на определенном сайте

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

const puppeteer = require('puppeteer');

//const {installMouseHelper} = require('./install-mouse-helper');


async function run () {

const browser = await puppeteer.launch({
    headless: true,
    ignoreHTTPSErrors: true,
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
});

const page = await browser.newPage();
//await installMouseHelper(page);


await page.goto("https://dash.bdroppy.com/login?lang=EN", {waitUntil: 'networkidle2'});

await page.waitFor('input[name=email]');

await page.$eval('input[name=email]', el => el.value = '[email protected]');

await page.$eval('input[name=password]', el => el.value = 'abcdefg');

// const loginButton = await page.$('.AuthSubmit');
// const rect = await page.evaluate((loginButton) => {
//     const {top, left, bottom, right} = loginButton.getBoundingClientRect();
//     return {top, left, bottom, right};
//   }, loginButton);

//  const x = (rect.top + rect.right) / 2;
//  const y = (rect.left + rect.bottom) / 2;

// console.log(x,y);

// console.log(rect);

await page.mouse.move(290, 539);

await page.mouse.click(290, 539, { button: 'left' })

// console.log(await page.evaluate( async() => {
//     const loginbutton =  document.elementFromPoint(290, 533);
//     await page.waitFor(3000);
   
//     await page.mouse.down();

// await page.mouse.up();
    
//   }));

//await page.mouse.down();

//await page.mouse.up();



// await page.$$eval(selectors[0].click())


await page.waitFor(3000);

//await page.click('.AuthSubmit');
// await page.click('.AuthSubmit');



// await page.$eval('.AuthSubmit CC', el => {
//     console.log(el);
//     el.click()
// });

//await page.keyboard.press('Enter');

// await page.waitForNavigation();




await page.screenshot({path: 'screenshot.png'});



//  page.on('dialog', async (dialog) => {
//         console.log(dialog.defaultValue());
//     // dialog.accept("Stack Overflow!");
// });



await browser.close();
}

run();
23.06.2020

  • попробуйте page. $ x (xpath). найдите правильный путь и попробуйте 23.06.2020
  • Здравствуйте. Не удалось надежно получить xpath для кнопки входа в систему, также заметил, что родительский элемент изменяется при каждом обновлении, возможно, в попытке помешать такого рода автоматизации? 23.06.2020

Ответы:


1

Здесь я использовал тип ввода. Это будет вводиться по имени.

Протестировано и работает нормально.

await page.goto("https://dash.bdroppy.com/login?lang=EN", {waitUntil: 'networkidle2'});

await page.waitFor('input[name=email]');

await page.type('input[name=email]', 'test comment', {delay: 20})

//await page.$eval('input[name=email]', el => el.value = '[email protected]');

await page.type('input[name=password]', 'test comment', {delay: 20})

//add some delay here. This should work

await page.click('div[class="AuthSubmit CC "]');

Возможно, родительский элемент меняется, но введен только один адрес электронной почты / пароль. Мы можем это использовать.

23.06.2020
  • Здравствуйте, я не могу отправить его, пожалуйста, есть какие-нибудь предложения? 23.06.2020
  • Вы имеете в виду, что хотите нажать кнопку? 23.06.2020
  • Да, это мое намерение. 23.06.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..