node JS 질문입니다 ㅠ 채택완료

3년 전 조회 2,572

현재 반복적으로 구동이 되는 node인데

새창열림이 아니라 새탭으로 열리려면 혹시 바꿔야할 부분이 있을까요..?

조언이나..관련링크..부탁드립니다.

Copy
let flag = true;
(async () => {
  for (var i = 0; i < browser_count; i++) {
    if (flag) {
      var options = new chrome.Options();
      options.setUserPreferences({ 'profile.default_content_setting_values.notifications': 2 });

      let driver = await new Builder('./chromedriver').forBrowser('chrome').withCapabilities(options).build();
      await driver.get('https://www.naver.com');
      await driver.wait(until.elementLocated(By.css('#footer')));

      //메인 브라우저 값 저장
      const defaultHandle = await driver.getWindowHandle();
      //로그인

      await Nlogin(driver, uid, upw);
      //console.log('기본 핸들 저장 완료');
      setTimeout(async () => {
        while (flag) {
          flag = await Samlip(driver);
        }
      });
    }

  }

})()

const Nlogin = async (driver, nid, npw) => {
  //로그인
  const loginBtn = await driver.findElement(By.css(`a.link_login`));
  await loginBtn.click();
  //console.log('로그인 화면 전환 완료');

  //대기 (아이디 비번)
  await driver.wait(until.elementLocated(By.css('#id')));
  await driver.wait(until.elementLocated(By.css('#pw')));

  //아이디 비번 입력
  await driver.executeScript(`
        document.querySelector('#id').value = '${nid}';
        document.querySelector('#pw').value = '${npw}';
    `);

  //대기 (로그인 버튼)
  await driver.wait(until.elementLocated(By.css('.btn_login')));
  //console.log('아이디 비번 입력 완료');

  //로그인 버튼 클릭
  const loginSubmit = await driver.findElement(By.css(`.btn_login`));
  await loginSubmit.click();
  //console.log('로그인 버튼 클릭 완료');

}

const Samlip = async (driver) => {
  await driver.get(buy_link);

  // 구매버튼을 
  try {
    //await driver.wait(until.elementLocated(By.css('#footer')));
    await driver.sleep(150)
    //await driver.findElement(By.className('N=a:pcs.buy'));
    ///console.log('tttt');
    const buybtn = await driver.findElement(By.className('N=a:pcs.buy'));
    await buybtn.click();

    try {
      // alert 창이 있는 경우 500ms 간격으로 안뜰때까지 반복
      while (true) {
        await driver.sleep(500);
        var alert = await driver.switchTo().alert()
        await alert.accept();
        await buybtn.click();
      }
    } catch (err) {

    }

    await driver.wait(until.elementLocated(By.className('order_header')));

    const paybtn = await driver.findElement(By.className('btn_payment'));
    await paybtn.click();

    return false;
  } catch (e) {
    //console.log(e.message);
    return true;
  }

}

답변 1개

채택된 답변
+20 포인트

새탭, 새창은 브라우저 설정으로 하는걸로 알고 있습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고