Files
NaverSearcher/NaverSearcher/Form1.cs
2021-08-03 08:58:29 +09:00

286 lines
10 KiB
C#

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace NaverSearcher
{
public partial class Form1 : Form
{
ChromeDriver _ChromeDriver;
public Form1()
{
InitializeComponent();
ChromeOptions _ChromeOptions = new ChromeOptions();
_ChromeOptions.AddArguments("disable-infobars");
_ChromeOptions.AddArguments("--js-flags=--expose-gc");
_ChromeOptions.AddArguments("--enable-precise-memory-info");
_ChromeOptions.AddArguments("--disable-popup-blocking");
_ChromeOptions.AddArguments("--disable-default-apps");
_ChromeOptions.AddArguments("--headless");
_ChromeOptions.AddArguments("user - agent = Mozilla / 5.0(Macintosh; Intel Mac OS X 10_12_6) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 61.0.3163.100 Safari / 537.36");
// 프록시 설정
//Proxy proxy = new Proxy();
//proxy.Kind = ProxyKind.Manual;
//proxy.IsAutoDetect = false;
//proxy.HttpProxy =
//proxy.SslProxy = ip;
//_ChromeOptions.Proxy = proxy;
//_ChromeOptions.AddArgument("ignore-certificate-errors");
ChromeDriverService _ChromeDriverService = ChromeDriverService.CreateDefaultService();
_ChromeDriverService.HideCommandPromptWindow = true;
_ChromeDriver = new ChromeDriver(_ChromeDriverService, _ChromeOptions);
//_ChromeDriver = new ChromeDriver();
//_ChromeOptions.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko")
// 하루에 두번 검색
// {{바나나우유 라떼, 초코우유 라떼}, {민트초코바, 민트색}}
// 검색어 1페어
// 로그인 여부 확인
// 로그아웃 실행
// 네이버 메인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 검색어 입력 (검색어 1)
// 검색어 확인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 아무 게시글 클릭
// 이동된 페이지 작업
// 스크롤 내리기
// 20 ~ 60초 대기
// 새창 닫기
// 검색어 입력 (검색어 2, 기존 대기창)
// 검색어 확인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 아무 게시글 클릭
// 이동된 페이지 작업
// 스크롤 내리기
// 20 ~ 60초 대기
// 새창 닫기
// 아무거나 검색 (비선형 검색어)
// 검색어 확인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 아무 게시글 클릭
// 이동된 페이지 작업
// 스크롤 내리기
// 20 ~ 60초 대기
// 새창 닫기
// 검색어 2페어
// 로그인 여부 확인
// 로그아웃 실행
// 네이버 메인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 검색어 입력 (검색어 1)
// 검색어 확인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 아무 게시글 클릭
// 이동된 페이지 작업
// 스크롤 내리기
// 20 ~ 60초 대기
// 전부 닫기
// 로그인 여부 확인
// 로그아웃 실행
// 네이버 메인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 검색어 입력 (검색어 2, 기존 대기창)
// 검색어 확인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 아무 게시글 클릭
// 이동된 페이지 작업
// 스크롤 내리기
// 20 ~ 60초 대기
// 새창 닫기
// 아무거나 검색 (비선형 검색어)
// 검색어 확인
// 스크롤 내린다.
// 20 ~ 60초 대기
// 아무 게시글 클릭
// 이동된 페이지 작업
// 스크롤 내리기
// 20 ~ 60초 대기
// 새창 닫기
}
private void button1_Click(object sender, EventArgs e)
{
try
{
/*
_ChromeDriver.execute_script('window.open("about:blank", "_blank");')
_ChromeDriver.execute_script('window.open("about:blank", "_blank");')
tabs = _ChromeDriver.window_handles
# TAB_1
_ChromeDriver.switch_to_window(tabs[0])
_ChromeDriver.get('http://www.naver.com/')
# TAB_2
_ChromeDriver.switch_to_window(tabs[1])
_ChromeDriver.get('http://www.google.com/')
*/
_ChromeDriver.Navigate().GoToUrl(@"https://naver.com");
WebDriverWait _WebDriverWait = new WebDriverWait(_ChromeDriver, TimeSpan.FromSeconds(3));
var elem = _ChromeDriver.FindElementByXPath("//*");
var source_code = elem.GetAttribute("outerHTML");
((IJavaScriptExecutor)_ChromeDriver).ExecuteScript("window.open();");
_ChromeDriver.SwitchTo().Window(_ChromeDriver.WindowHandles[1]);
string winHandleBefore = _ChromeDriver.CurrentWindowHandle;
//_ChromeDriver.SwitchTo().Window(winHandleBefore);
_WebDriverWait = new WebDriverWait(_ChromeDriver, TimeSpan.FromSeconds(3));
elem = _ChromeDriver.FindElementByXPath("//*");
source_code = elem.GetAttribute("outerHTML");
_ChromeDriver.SwitchTo().Window(_ChromeDriver.WindowHandles[1]);
winHandleBefore = _ChromeDriver.CurrentWindowHandle;
_WebDriverWait = new WebDriverWait(_ChromeDriver, TimeSpan.FromSeconds(3));
elem = _ChromeDriver.FindElementByXPath("//*");
source_code = elem.GetAttribute("outerHTML");
_ChromeDriver.Navigate().GoToUrl(@"https://inrose.com");
_WebDriverWait = new WebDriverWait(_ChromeDriver, TimeSpan.FromSeconds(3));
elem = _ChromeDriver.FindElementByXPath("//*");
source_code = elem.GetAttribute("outerHTML");
_ChromeDriver.SwitchTo().Window(_ChromeDriver.WindowHandles.First());
winHandleBefore = _ChromeDriver.CurrentWindowHandle;
_WebDriverWait = new WebDriverWait(_ChromeDriver, TimeSpan.FromSeconds(3));
elem = _ChromeDriver.FindElementByXPath("//*");
source_code = elem.GetAttribute("outerHTML");
_ChromeDriver.Navigate().GoToUrl(@"https://google.com");
_WebDriverWait = new WebDriverWait(_ChromeDriver, TimeSpan.FromSeconds(3));
elem = _ChromeDriver.FindElementByXPath("//*");
source_code = elem.GetAttribute("outerHTML");
return;
_ChromeDriver.Navigate().GoToUrl(@"https://www.instagram.com/");
_WebDriverWait = new WebDriverWait(_ChromeDriver, TimeSpan.FromSeconds(3));
//_WebDriverWait.IgnoreExceptionTypes(typeof(NoSuchElementException));
string _id_xpath = "//*[@id=\"loginForm\"]/div/div[1]/div/label/input";
string _pass_xpath = "//*[@id=\"loginForm\"]/div/div[2]/div/label/input";
string _login_xpath = "//*[@id=\"loginForm\"]/div/div[3]/button/div";
_WebDriverWait.Until(ExpectedConditions.ElementIsVisible(By.XPath(_login_xpath)));
_ChromeDriver.FindElement(By.XPath(_id_xpath)).SendKeys(@"leeumdkj@gmail.com");
_ChromeDriver.FindElement(By.XPath(_pass_xpath)).SendKeys(@"awdr1536!!");
_ChromeDriver.FindElement(By.XPath(_login_xpath)).Click();
// 알림 존재시
string _alert_xpath = "//*[@id=\"react-root\"]/section/main/div/div/div/div/button";
_WebDriverWait.Until(ExpectedConditions.ElementIsVisible(By.XPath(_alert_xpath)));
try
{
_ChromeDriver.FindElement(By.XPath(_alert_xpath)).Click();
}
catch (Exception)
{
}
_alert_xpath = "/html/body/div[4]/div/div/div/div[3]/button[2]";
_WebDriverWait.Until(ExpectedConditions.ElementIsVisible(By.XPath(_alert_xpath)));
try
{
_ChromeDriver.FindElement(By.XPath(_alert_xpath)).Click();
}
catch (Exception)
{
}
string _search_xpath = "//*[@id=\"react-root\"]/section/nav/div[2]/div/div/div[2]/input";
_WebDriverWait.Until(ExpectedConditions.ElementIsVisible(By.XPath(_search_xpath)));
_ChromeDriver.FindElement(By.XPath(_search_xpath)).SendKeys(@"인플 검색");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
#region
string kknd = HangulString.SplitToPhonemes("ㅄ");
MessageBox.Show(kknd);
char[] arr = kknd.ToCharArray();
foreach (var item in arr)
{
Trace.WriteLine(item);
}
#endregion
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
_ChromeDriver.Quit();
}
}
}