Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2020, 09:50
Новичок на форуме
Отправить личное сообщение для daniil242141 Посмотреть профиль Найти все сообщения от daniil242141
 
Регистрация: 10.06.2018
Сообщений: 9

Как передать константы между функциями
Есть код
JavascriptВыделить код

const puppeteer = require('puppeteer');
Main();
async function Main(){
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
 
Table();
}
 
async function Table(){
await page.goto('file:///C:/Users/Daniil/Desktop/LF%20&%20CSM%20-%20TradeBack.html');
await page.waitFor(1000);
}

Нужно чтобы функция Table могла взаимодействовать с браузером открым в Main, но не могу понять как это сделать. Буду благодарен за подсказку!
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2020, 13:53
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Может так?
async function Main() {
    const browser = await puppeteer.launch({headless: false});

    Table(browser);
}

async function Table(browser) {
    const page = await browser.newPage();
    
    await page.goto('file:///C:/Users/Daniil/Desktop/LF%20&%20CSM%20-%20TradeBack.html');
    await page.waitFor(1000);
}
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2020, 17:07
Новичок на форуме
Отправить личное сообщение для daniil242141 Посмотреть профиль Найти все сообщения от daniil242141
 
Регистрация: 10.06.2018
Сообщений: 9

Да, сработало! Спасибо большое!
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2020, 17:38
Новичок на форуме
Отправить личное сообщение для daniil242141 Посмотреть профиль Найти все сообщения от daniil242141
 
Регистрация: 10.06.2018
Сообщений: 9

А если мне нужно подключить несколько функций, то вот так?
Main();
async function Main() {
    const browser = await puppeteer.launch({headless: false});

    Autorizacia(browser);
    Filtr(browser);
    
}

async function Autorizacia(browser) {  
    const page = await browser.newPage();
    
    await page.goto('https://');
    await page.waitFor(15000);
div.auth_button_h3');
}

async function Filtr(browser){
    await page.waitFor(5000);
    await page.waitFor('#user-nickname');
    console.log('Авторизация прошла успешно, устанавливаем фильтры')
}

Я все верно понял? Почему-то код не хочет запускать 2 функцию.. Извините, если задаю глупые вопросы..
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2020, 17:42
Новичок на форуме
Отправить личное сообщение для daniil242141 Посмотреть профиль Найти все сообщения от daniil242141
 
Регистрация: 10.06.2018
Сообщений: 9

Сообщение от daniil242141 Посмотреть сообщение
А если мне нужно подключить несколько функций, то вот так?
Main();
async function Main() {
    const browser = await puppeteer.launch({headless: false});

    Autorizacia(browser);
    Filtr(browser);
    
}

async function Autorizacia(browser) {  
    const page = await browser.newPage();
    
    await page.goto('https://');
    await page.waitFor(15000);
div.auth_button_h3');
}

async function Filtr(browser){
    await page.waitFor(5000);
    await page.waitFor('#user-nickname');
    console.log('Авторизация прошла успешно, устанавливаем фильтры')
}

Я все верно понял? Почему-то код не хочет запускать 2 функцию.. Извините, если задаю глупые вопросы..
А точнее эти функции запускаются асинхронно, насколько я знаю. Но я же для этого их и вызываю, чтобы они запускались линейно..
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2020, 17:45
Новичок на форуме
Отправить личное сообщение для daniil242141 Посмотреть профиль Найти все сообщения от daniil242141
 
Регистрация: 10.06.2018
Сообщений: 9

Кажется понял, моя ошибка заключается в том, что нужно вызывать следующую функцию в конце первой, спасибо)
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2020, 17:47
Новичок на форуме
Отправить личное сообщение для daniil242141 Посмотреть профиль Найти все сообщения от daniil242141
 
Регистрация: 10.06.2018
Сообщений: 9

Но теперь проблема заключается в том, что "browser" передается только на первую функцию, а на вторую нет..
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2020, 11:46
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

ну передаешь ты browser, а используешь page, не? )
Ответить с цитированием
  #9 (permalink)  
Старый 14.02.2020, 13:08
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Для каждого метода нужно открывать свою вкладку, или открывать одну вкладку в функции Main и передавать её экземпляр в аргументах другим функциям.

Первый вариант с последовательным вызовом функций в примере ниже:
Main();
async function Main() {
    const browser = await puppeteer.launch({headless: false});

    await Autorizacia(browser);
    await Filtr(browser);
}

async function Autorizacia(browser) {  
    const page = await browser.newPage();
    
    await page.goto('https://');
    await page.waitFor(15000);
    // div.auth_button_h3'); - syntax error
}

async function Filtr(browser){
    const page = await browser.newPage();

    await page.waitFor(5000);
    await page.waitFor('#user-nickname');

    console.log('Авторизация прошла успешно, устанавливаем фильтры')
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать выбранный файл (input file) ajax sasha3611 jQuery 1 11.02.2018 14:14
Как передать в массив перемеенную как ключ массива? фдуч Общие вопросы Javascript 15 11.01.2018 21:21
Как поставить задержку между каждым POST imedia Элементы интерфейса 1 09.03.2017 15:44
Как c функцией .ajax() передать несколько значений в php? Faab jQuery 11 19.11.2013 12:03
Как передать выполнение функции в throw? platedz Events/DOM/Window 3 19.08.2012 20:28