본문 바로가기
반응형

C# 기술36

[C#] winForm 에서 deepL api 호출하기 프로젝트에서 우클릭 -> Nuget 패키지 관리 DeepL.net 찾아서 설치 using DeepL; // api key Translator translator = new Translator("your deepL api key here"); api key 를 받아야되는데, 아래 DeepL 사이트에 가입하면 확인 가능합니다. https://www.deepl.com/ DeepL 번역: 세계에서 가장 정확한 번역기 텍스트 및 전체 문서 파일을 즉시 번역하세요. 개인과 팀을 위한 정확한 AI 번역. 매일 수백만 명이 DeepL 번역기로 작업합니다. www.deepl.com 무료 가입 가능 카드 정보 입력 필수 ( 결제되지 않음 ) 계정 -> 계정 탭 -> 페이지 최하단에 key 확인 기본적인 코드 var tra.. 2023. 10. 29.
[Selenium] input text 입력 및 삭제 방법 input text 에 값을 입력하고, 삭제하는 방법 입력 우선 input element 를 가져옵니다. var input = driver.FindElement(By.TagName("input")); id 로 가져오든 name 으로 가져오든 정확한 input 을 가져와야합니다. SendKey 를 이용해서 값을 입력합니다. input.SendKeys("Hello~ Bryan~"); 입력 값 삭제 방법1. input.Clear(); 간혹 안먹히는 경우가 있습니다. 방법2. input.Click(); input.SendKeys(Keys.Control + "A"); input.SendKeys("Hello~Bryan"); input 에 focus를 주고 (click()), 컨트롤+A를 눌러서 전체 텍스트가 선택되.. 2023. 2. 25.
[Selenium] Page Load Timeout 설정하기 C# Selenium Page Load Timeout Error OpenQA.Selenium.WebDriverException The HTTP request to the remote WebDriver server for URL http://localhost:55282/session/3594c33da895850a9f51c1e52174f9de/url timed out after 60 seconds 크롤링 실행 중 위와 같은 오류가 발생합니다. 이유는 페이지가 뜨는데 Timeout으로 설정한 60초 보다 오래걸렸기 때문입니다. 페이지에 이상이 없고, 로딩시간이 길더라도 페이지가 뜨긴한다면 Timeout 시간을 늘려주는게 답입니다. 만약에 오랜시간을 기다려도 페이지 오류로 무한로딩이 된다면, timeout 을 .. 2022. 9. 25.
[C#] ChromeDriver only supports characters in the bmp 해결하기 unknown error: ChromeDriver only supports characters in the BMP ChromeDriver 에서 BMP 문자만 지원하기 때문에 SMP 문자(예: CJK, 이모티콘, 기호 등)를 보내려고 하면 오류가 발생합니다. 그래서 SendKeys() 를 할때 파라메터로 들어가는 String 에 SMP 문자는 제거를 해야합니다. 정규식으로 지우는 방법은 Regex.Replace(text, @"\p{Cs}", "") 보기 쉽게 쓰면, String text = "이모지가 포함된 문자"; String filtered = Regex.Replace(text, @"\p{Cs}", ""); someInput.SendKeys(filtered); 2022. 4. 6.
[C#] Callback, Action으로 간단히 사용하기 (delegate 사용안함) C# Action Callback 역시 설명은 예시로~ 여러가지 경우에 쓰이지만 아래와 같은 예를 들어보겠습니다. Main Class 가 있습니다. 여기에서 Watcher 라는 클래스의 객체를 만들어서 파일 모니터링을 한다고 합니다. 특정 경로의 폴더에 어떤 파일이 생기거나 삭제되거나하면 알림을 주는건데요. 프로세스는 아래와 같습니다. 1. 프로그램이 실행되면 Watcher 를 띄워서 모니터링을 시작합니다. 이때 Main Class 에서는 본인이 할일을 합니다. 2. Watcher 가 모니터링 중에 파일 생성을 감지했습니다. Watcher는 Main 을 호출해서 Main 에서 해당 작업을 처리해야 합니다. 이럴때 코드를 어떻게 만드시겠습니까? 제가 주니어였을 땐 아래와 같이 코딩했습니다. (이렇게 하지마.. 2021. 11. 25.
[C#] 크롤링에 유용한 라이브러리 HtmlAgilityPack HtmlAgilityPack 꽤 많이 사용되고 있는 라이브러리입니다. html string 을 load 하여 그 문자열을 파싱하는 방법입니다. 이것만으로 크롤링 할 수 없는 사이트가 많습니다. 왜냐하면 데이터를 async 하게 로드하는 경우는 사용할 수 없습니다. (스크롤 다운 -> 로딩 같은) 그래서 Selenium 과 HtmlAgilityPack 을 같이 사용하면 유용한 경우가 있습니다. Selenium 으로 많은 element 를 loop 돌며 처리할 때, 느린경우가 있습니다. (N 쇼핑 같은...) 이렇게 느린 부분을 HtmlAgilityPack 을 사용해서 파싱하여 처리합니다. 1. 설치 NugetPackage 관리자로 들어갑니다. 검색으로 HtmlAgilityPack 을 찾아서 설치합니다. (.. 2021. 10. 31.
[C#] 여러 개 Thread 사용 시 주의사항 (파라메터 사용 시) 여러 개 Thread 사용 시 주의사항 (파라메터 주의) For 문에서 여러 Thread 를 실행할 때 Thread 에 parameter 를 넘길때 주의할 점이 있습니다. 우선 코드를 보고 결과를 예상해 보세요. using System; using System.Collections.Generic; using System.Threading; namespace TestConsole { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); List threadList = new List(); for(int i=0; i myThre.. 2021. 10. 30.
[C#] Tuple 사용하기 1. 함수의 return type 에 괄호로 리턴 형식과 이름을 지정합니다. 2. return 할때 그 형식에 맞게 괄호 안에 값을 넣어서 리턴합니다. private (bool isValid, string hh, string mm) getControlValues() { if (comboBox_hh.SelectedItem == null || comboBox_mm.SelectedItem == null) { MessageBox.Show("Time is required."); return (false, "", ""); } string hh = comboBox_hh.SelectedItem.ToString(); string mm = comboBox_mm.SelectedItem.ToString(); return (t.. 2021. 10. 20.
[Selenium] “Element Is Not Clickable at Point” 해결방법 Selenium Element Is Not Clickable at Point C# 이든 Python 이든 마찬가지 일듯합니다. 결론 부터 말씀드리면, 클릭하고자 하는 element 위에 다른 무언가가 있어서 발생하는 오류 메시지 입니다. 해결방법은 그 위에 있는 layer를 닫는 코드를 추가하고 실행해야합니다. 아래 이미지 처럼 Following 버튼을 클릭하려는데, 위에 cookie 어쩌고 하는 layer 가 있어서 그렇습니다. 아래 이미지를 예로 든다면, 저 close 버튼이 있으면 클릭해주는 코드를 넣고 다시 실행하면 잘 됩니다. 아... 프로그램이 클릭하는거라 저런건 상관없을줄알았는데.. -ㅅ- 2021. 8. 29.
[C#] Tuple 사용 방법 먼저 예제로~ (아래쪽엔 설명) 예제 - Tuple 을 리턴하는 메소드 private (bool isValid, string hh, string mm) getControlValues() { if (comboBox_hh.SelectedItem == null || comboBox_mm.SelectedItem == null) { MessageBox.Show("Time is required."); return (false, "", ""); } string hh = comboBox_hh.SelectedItem.ToString(); string mm = comboBox_mm.SelectedItem.ToString(); return (true, hh, mm); } 메소드 리턴 타입을 ( ) 안에 타입과 함께 변수명을.. 2021. 6. 1.
728x90
반응형