셀레늄을 사용하여 트윗 자동화

3899 단어
트위터에서 #100DaysOfCode 챌린지라는 챌린지에 참여했습니다. 배우고 코딩하도록 동기를 부여하는 흥미진진한 도전입니다. 링크: https://www.100daysofcode.com/ .

도전에 대해



과제는 100일까지 코딩하거나 관련 작업을 수행하고 해시 태그 100DaysOfCode를 사용하여 매일 진행 상황에 대해 트윗하는 것입니다.

아이디어의 탄생



이 챌린지에서는 로그인하고 동일한 해시 태그를 입력하는 반복적인 작업이 있습니다. 셀레늄이 갑자기 클릭되었을 때 셀레늄을 배우고 있었습니다. 내 트윗을 자동화하는 데 지식을 사용하지 않겠습니까!

내가 자동화한 작업 단계:
1. 자격 증명을 제공하여 트위터에 로그온합니다.
2. 필요한 # 태그 자동 입력, 내 트윗 입력
지금은 수동입니다.
3. 트윗을 클릭합니다.

도구에 대한 간략한 설명 - Selenium



Selenium은 내 작업을 자동화하는 데 사용한 도구이므로 여기에 내가 사용한 도구 및 패키지에 대한 정보가 있습니다. 그것은 방대한 주제이지만 여기에서 몇 가지 중요한 영역을 언급하고 내 코드로 설명했습니다.

Selenium에는 다음과 같은 두 가지 패키지가 있습니다.
  • 웹드라이버
  • 웹 요소

  • WebDriver : 웹 애플리케이션을 자동화하는 데 사용되는 오픈 소스 API 모음입니다. 다양한 브라우저를 지원합니다. 브라우저에서 웹 애플리케이션을 로드하는 방법이 있습니다.

    WebElement : 인터페이스이며 웹 페이지의 모든 것을 웹 요소라고 합니다. 예: 입력 상자, 텍스트 상자, 버튼 등. WebElement의 개체와 메서드를 사용하여 웹 요소를 식별하고 작동합니다.

    코드 블록

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    

    위의 코드는 패키지를 가져옵니다. 드라이버, 브라우저에서 앱을 실행하려면 크롬 드라이버가 필요합니다.

    public class autoTweet {
      WebDriver driver;
        System.setProperty("webdriver.chrome.driver","C:\\Users\\xyz\\chromedriver.exe"); // setting our driver path
          driver = new ChromeDriver();
          driver.get("https://twitter.com/home");// using driver loads twitter
    

    위의 코드 스니펫은 크롬에서 트위터를 시작하는 것입니다.

    public void f() {
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    
    WebElement username = driver.findElement(By.xpath("/html/body/div/div/div/div[2]/main/div/div/div[1]/form/div/div[1]/label/div/div[2]/div/input"));
        username.sendKeys("[email protected]");// Give valid mail id, this is example
    
    WebElement password = driver.findElement(By.xpath("/html/body/div/div/div/div[2]/main/div/div/div[1]/form/div/div[2]/label/div/div[2]/div/input"));
        password.sendKeys("*****"); // give your password
        driver.findElement(By.xpath("/html/body/div/div/div/div[2]/main/div/div/div[1]/form/div/div[3]/divSdiv")).click();// find Log in button and click
    

    때때로 스크립트가 페이지가 로드되기 전에도 요소를 찾으려고 하기 때문에 시간 초과를 사용했습니다. 따라서 페이지가 모든 요소를 ​​로드할 때까지 기다립니다.
    그런 다음 로케이터 xpath, 사용자 이름 및 암호 텍스트 상자를 사용하여 식별하고 sendKeys() 메서드를 사용하여 값을 전달합니다.

    (xpaths에 대한 자세한 내용은 여기: https://www.guru99.com/xpath-selenium.html ).

    (여기에 sendKeys 정보: https://www.guru99.com/accessing-forms-in-webdriver.html )

    WebElement tweet = driver.findElement(By.xpath("/html/body/div/div/div/div[2]/main/div/div/div/div/div/div[2]/div/div[2]/div[1]/div/div/div/div[2]/div[1]/div/div/div/div/div/div/div/div/div/div[1]/div/div/div/div[2]/div/div/div/div")); // find the tweeting text box
    
        tweet.sendKeys("#100DaysOfCode #codeNewbies"); //type auto #100DaysOfCode #codeNewbies
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    
    

    마지막으로 트윗을 위한 웹 요소 텍스트 상자를 식별하고 #100DaysOfCode #codeNewbies를 전달합니다.
    개선의 여지가 많고 이 특정 트위터 사례는 더 확장될 수 있습니다. 아이디어는 있지만 작업해야 합니다.

    미래 범위



    git 허브에서 내 로그 정보를 가져와 내 트윗에 직접 넣습니다. 이 경우 대부분 git 허브 로그에서와 동일한 업데이트를 트윗합니다.

    이것은 dev.to에 대한 첫 번째 기술 게시물입니다. 개선할 수 있도록 도와주세요.
    나는 모든 피드백, 건설적인 비판을 환영합니다.
    피드백을 자유롭게 제공하십시오

    감사!

    좋은 웹페이지 즐겨찾기