286 lines
10 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|